不在多地图的地图中更新结构值

时间:2015-12-26 23:40:04

标签: c++ dictionary struct iterator multimap

我使用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(当我将新节点添加到地图中时,我将它们初始化为零。)

我在这里使用迭代器做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,这段代码运行正常。在此之前我的逻辑搞砸了。此函数在while循环中调用,其参数在每次调用之前重新初始化为零。

哇。

无论如何,谢谢你!