stdmap
Есть ли лучший способ, чем приведенный ниже код, перебирать контейнер в любом направлении, используя одни и те же итераторы? #include <iostream> #include <map> int main() { const bool descend = false; std::map<int, int> mapp; mapp[1] = 1; mapp[2] = 2; mapp[3] = 3; ...
Итак, у меня проблема с алгоритмом std::map, lambda и stl(remove_if). На самом деле, тот же код с std::list или std::vector работает хорошо. Мой тестовый пример: #include <map> #include <iostream> #include <algorithm> struct Foo { Foo() : _id(0) {} Foo(int id) : _id(id) { ...
Я знаю, как создать функцию, которая служит в качестве пользовательского компаратора карт: std::map<std::string, std::string, bool (*)(std::string, std::string)> myMap(MapComparator); bool MapComparator(std::string left, std::string right) { return left < right; } Но я не знаю, как сделать т...
Существует ли в C++ способ поиска отображенного значения (вместо ключа) карты, а затем возврата ключа? Обычно я делаю someMap.find(someKey)->second, чтобы получить значение, но здесь я хочу сделать наоборот и получить ключ (значения и ключи все уникальны)....
Согласно этому вы не можете зарезервировать место для std::map: Нет, элементы карты хранятся внутри древовидной структуры. Невозможно построить дерево, пока вы не знаете ключи и значения они должны быть сохранены. Из этого очевидно, почему std::map будет не хватать метода reserve(), который он дел...
Это один из возможных способов я выйду: struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map<int, int> m; vector<int> keys; // Retrieve all keys transform(m.begin(), m.end(), back_i...
предполагая, что карта, где вы хотите сохранить существующие записи. В 20% случаев вводимые данные являются новыми. Есть ли преимущество в выполнении std::map::find затем std::map:: insert с помощью этого возвращенного итератора? Или быстрее попытаться вставить, а затем действовать на основе того, указывает...
Я пытаюсь понять, почему следующий код не работает, и я предполагаю, что это проблема с использованием char* в качестве типа ключа, однако я не уверен, как я могу решить это и почему это происходит. Все другие функции, которые я использую (в HL2 SDK) использовать char* используя std::string будет вызывать мно...
Как обновить значение ключа в std::map после find способ? у меня есть объявление карты и итератора следующим образом: map <char, int> m1; map <char, int>::iterator m1_it; typedef pair <char, int> count_pair; Я использую карту для хранения количества вхождений символа. Я использую Visua...
typedef map<string, string> myMap; при вставке новой пары myMap он будет использовать ключ string для сравнения с помощью собственного строкового компаратора. Можно ли переопределить этот компаратор? Например, я хотел бы сравнить ключ string по его длине, а не по алфавиту. Или есть другой способ сорти...