我使用C ++并且拥有许多我需要更新内容的数据结构。我使用了int和my结构的双映射到多映射的映射。它看起来像这样:
struct dnode{
std::string ticker;
double buy;
double sell;
//(sell/buy)
double result;
bool hasDuplicate;
};
我的结构定义如下所示:
void dataProcessor::addCloseToEntry(double close){
map<double, std::multimap<int, dnode*> *>::iterator it;
multimap<int, dnode*>::iterator mm_it;
for(it = m_ptable.begin(); it != m_ptable.end(); it++){
for(mm_it = (it->second)->begin(); mm_it != (it->second)->end(); mm_it++){
mm_it->second->sell = close;
mm_it->second->result = close/(mm_it->second->buy);
}
}
return;
}
问题是我需要遍历多地图中的所有dnode并更新它们的价值&#34; sell&#34;和&#34;结果&#34;因为必须在所有节点已经在多映射中之后计算。这是我写的功能:
{{1}}
当我单步执行此代码时,我会看到&#34; sell&#34;的值。和&#34;结果&#34;不会改变,但保持为0(当我将新节点添加到地图中时,我将它们初始化为零。)
我在这里使用迭代器做错了吗?
谢谢!
答案 0 :(得分:0)
好的,这段代码运行正常。在此之前我的逻辑搞砸了。此函数在while循环中调用,其参数在每次调用之前重新初始化为零。
哇。
无论如何,谢谢你!