gpt4 book ai didi

c++ - multimap 累积值

转载 作者:行者123 更新时间:2023-11-30 03:10:27 27 4
gpt4 key购买 nike

我有一个由

定义的 multimap
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::accumulate 函数如何访问第二个迭代器值?

最佳答案

您的问题与 summ 函数有关,您实际上需要比它更好的东西才能处理 2 种不匹配的类型。

如果幸运的话,这可以工作:

int summ(int x, buf_map::value_type const& v) { return x + v.second; }

如果你运气不好(取决于 accumulate 的实现方式),你总是可以:

struct Summer
{
typedef buf_map::value_type const& s_type;
int operator()(int x, s_type v) const { return x + v.second.first; }
int operator()(s_type v, int x) const { return x + v.second.first; }
};

然后使用:

int result = std::accumulate(map.begin(), map.end(), 0, Summer());

关于c++ - multimap 累积值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com