不更新多图映射中的结构值
Not updating struct values in map of multimaps
我正在使用 C++,并且有许多数据结构需要更新。我使用从 double 到 multi 映射的 int 映射和我的结构。它看起来像这样:
std::map<double, std::multimap<int, dnode*> *> m_ptable;
我的结构定义如下所示:
struct dnode{
std::string ticker;
double buy;
double sell;
//(sell/buy)
double result;
bool hasDuplicate;
};
问题是我需要遍历多映射中的所有 dnode 并更新它们的 "sell" 和 "result" 值,因为这必须在所有节点都完成后计算已经在多地图中。这是我为此编写的函数:
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;
}
当我单步执行这段代码时,我看到 "sell" 和 "result" 的值没有改变,而是保持为 0(当我将新节点添加到地图。)
是不是我对这里的迭代器做错了什么导致了这个?
谢谢!
好的,这段代码工作正常。在此之前,我的逻辑被搞乱了。此函数是在 while 循环内调用的,其参数在每次调用之前都重新初始化为零。
哇哦。
谢谢大家!
我正在使用 C++,并且有许多数据结构需要更新。我使用从 double 到 multi 映射的 int 映射和我的结构。它看起来像这样:
std::map<double, std::multimap<int, dnode*> *> m_ptable;
我的结构定义如下所示:
struct dnode{
std::string ticker;
double buy;
double sell;
//(sell/buy)
double result;
bool hasDuplicate;
};
问题是我需要遍历多映射中的所有 dnode 并更新它们的 "sell" 和 "result" 值,因为这必须在所有节点都完成后计算已经在多地图中。这是我为此编写的函数:
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;
}
当我单步执行这段代码时,我看到 "sell" 和 "result" 的值没有改变,而是保持为 0(当我将新节点添加到地图。)
是不是我对这里的迭代器做错了什么导致了这个?
谢谢!
好的,这段代码工作正常。在此之前,我的逻辑被搞乱了。此函数是在 while 循环内调用的,其参数在每次调用之前都重新初始化为零。
哇哦。
谢谢大家!