je un multimap défini parmultimap accumulent les valeurs
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;
}
Je voudrais résumer toutes les valeurs pointées par it1.second Comment le std :: accumuler accès aux fonctions les secondes valeurs iterator?
Salut, si vous les itérez de toute façon, pourquoi ne pas ajouter cela à votre boucle? 'total_buf_size + = it1.second;' – nus
Que voulez-vous dire par "toutes les valeurs" dans it1.second? It1.second est juste un int. Il n'y a qu'une valeur de valeur. –
@ufotds parfois l'étape la plus simple résout le problème. J'ai utilisé ce que vous avez mentionné 'total_buf_size + = it1.second;'. J'ai été influencé en essayant d'utiliser accumulate basé sur les exemples de STL pour le conteneur de vecteur. J'essayais aussi d'éviter de faire une boucle dans le conteneur. – vivekv80