Вы можете использовать MAP ведьма имеет очень быстрый доступ к вашему элементу, если у вас есть ключ. в этом случае я думаю, что использование MAP было бы лучшим способом достижения максимальной скорости. STD :: MAP

я естьstd::set<Foo>, и я хотел бы обновить некоторое значение существующего элемента в нем. Обратите внимание, что значение, которое я обновляю, не меняет порядок в наборе:

#include <iostream>
#include <set>
#include <utility>

struct Foo {
  Foo(int i, int j) : id(i), val(j) {}
  int id;
  int val;
  bool operator<(const Foo& other) const {
    return id < other.id;
  }
};

typedef std::set<Foo> Set;

void update(Set& s, Foo f) {
  std::pair<Set::iterator, bool> p = s.insert(f);
  bool alreadyThere = p.second;
  if (alreadyThere)
    p.first->val += f.val; // error: assignment of data-member
                           // ‘Foo::val’ in read-only structure
}

int main(int argc, char** argv){
  Set s;
  update(s, Foo(1, 10));
  update(s, Foo(1, 5));
  // Now there should be one Foo object with val==15 in the set.                                                                
  return 0;
}

Есть ли какой-нибудь краткий способ сделать это? Или я должен проверить, если элемент уже там, и если так, удалить его, добавить значение и заново вставить?

Ответы на вопрос(4)

Ваш ответ на вопрос