我有多重映射通過多重映射累積值
typedef std::pair<int, int> comp_buf_pair; //pair<comp_t, dij>
typedef std::pair<int, comp_buf_pair> node_buf_pair;
typedef std::multimap<int, comp_buf_pair> buf_map; //key=PE, value = pair<comp_t, dij>
typedef buf_map::iterator It_buf;
int summ (int x, int y) {return x+y;}
int total_buf_size = 0;
std::cout << "\nUpdated buffer values" << std::endl;
for(It_buf it = bufsz_map.begin(); it!= bufsz_map.end(); ++it)
{
comp_buf_pair it1 = it->second;
// max buffer size will be summ(it1.second)
//total_buf_size = std::accumulate(bufsz_map.begin(), bufsz_map.end(), &summ); //error??
std::cout << "Total buffers required for this config = " << total_buf_size << std::endl;
std::cout << it->first << " : " << it1.first << " : " << it1.second << std::endl;
}
定義我想總結的it1.second 指向的所有值如何能的std ::累積函數訪問第二個迭代器值?
嗨,如果你正在迭代它們,爲什麼不把它添加到你的循環? 'total_buf_size + = it1.second;' – nus 2010-06-24 17:24:30
您在it1.second中的「所有值」是什麼意思? It1.second只是一個int。它只有價值。 – 2010-06-24 17:39:58
@ufotds有時候最簡單的一步就是解決問題。我使用了你提到的'total_buf_size + = it1.second;'。我試圖使用基於STL示例的向量容器進行累加的方式。另外我試圖避免在容器中循環。 – vivekv80 2010-06-24 18:04:41