Допустим есть
std::map<string, int> MyMap;
Как вывести содержимое контейнера, начиная с наибольшего значения? Сам контейнер дальше не используется.
Например:
map<string, int> MyMap;
MyMap["3"] = 30;
MyMap["1"] = 10;
MyMap["2"] = 20;
MyMap["4"] = 0;
for (pair<string, int> pair : MyMap) {
cout << pair.first << ": " << pair.second << '\n';
}
cout << '\n';
map<int, string> reverseMyMap;
for (pair<string, int> pair : MyMap) {
reverseMyMap[pair.second] = pair.first;
}
cout << "Reverse:\n";
map<int, string>::reverse_iterator it = reverseMyMap.rbegin();
while (it != reverseMyMap.rend()) {
cout << it->first << ": " << it->second << '\n';
it++;
}
Консоль:
1: 10
2: 20
3: 30
4: 0
Reverse:
30: 3
20: 2
10: 1
0: 4
Выполнить итерирование не от .begin()
до .end()
, а от .rbegin()
до .rend()
- словом, воспользоваться reverse_iterator
.
Задача написать свой класс "Строка"Столкнулся с такой проблемой: во время выполнения программы ошибка "Expression:CrtlsValidHeapPointer(block)"
pastebincom - исходный код заголовочного файла с реализацией shared_ptr