Интересно, почему у std::map::erase есть перегрузка, которая возвращает int, которое представляет количество стертых элементов; так что пока элементы уникальны, число будет либо 1, либо 0. В таком случае, почему он не возвращает bool, а не int?

     std::map<std::string, std::size_t> containers{
    {"map", 1}, {"set", 10}, {"map", 5}, {"vector", 4}, {"array", 7}
};

for(auto const& p : containers)
    std::cout << p.first << " " << p.second << '\n';

std::cout << containers.erase("map") << '\n'; // 1
std::cout << containers.erase("map") << '\n'; // 0

for(auto const& p : containers)
    std::cout << p.first << " " << p.second << '\n';
3
Itachi Uchiwa 9 Окт 2021 в 22:07

2 ответа

Лучший ответ

Все упорядоченные ассоциативные контейнеры C ++ основаны на двоичном дереве поиска, связаны между собой, и это отражается в их аналогичных интерфейсах.

1
user1095108 9 Окт 2021 в 19:20