приведенный ниже код показывает, как обычно работает привязка структуры. Он обеспечивает более информативное имя по сравнению с «первым», «вторым».
map<string, string> sites;
sites.insert({ "GeeksforGeeks", "Coding Resources" });
for (auto& [key, value] : sites)
{
cout << key.c_str() << " " << value.c_str() << endl;
}
Теперь у меня есть std::vector<pair<std::string, People>* > vec;
People
вот класс, а string
его / ее прозвища.
Код, подобный приведенному ниже, не работает, потому что vec
содержит указатели.
for (auto & [kay, value] : vec) {}
Тогда что мне делать, чтобы использовать привязку структуры для предоставления более описательных имен?
Редактировать :
Я использую указатели, потому что хочу избежать копий. Вот как я создаю std::vector<pair<std::string, People>* > vec;
.
У меня unordered_map<string, People>
, мне нужно распечатать результаты для клиентов детерминированным c способом, но порядок обхода карты случайный. Итак, я создаю vec
и сортирую vec
по строке, которая является ключом.
Если не использовать указатели, будет получено много копий, если я захочу отсортировать.