不更新多图映射中的结构值

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 循环内调用的,其参数在每次调用之前都重新初始化为零。

哇哦。

谢谢大家!