Я понимаю, что на итераторах есть общие функции, которые выполняют все, что вы хотите, например std::find, std::count и т. д., но почему стандартные контейнеры, такие как std::vector и std, не делают этого? ::array имеет над ними некоторую абстракцию для удобства? Например, если у вас есть std::vector с более длинным именем, вам нужно написать
Код: Выделить всё
std::find(nameOfLongNamedStdVector.begin(), nameOfLongNamedStdVector.end(), ...);
когда у нас могло быть что-то вроде
Я видел аргумент, что нет смысла переопределять функцию, поскольку std::find выполнит эту работу, но ее реализация может использовать std::find и просто действовать как оболочка для удобства. Более того, существуют контейнеры, такие как std::map, у которых есть метод contains, от которого std::vector также будет полезен. Вместо этого, если вы просто хотите узнать, находится ли значение в векторе, вам придется использовать std::find, а затем сравнить его с оператором end, что действительно неуклюже.
Я знаю что специализированные методы существуют там, где они улучшают производительность, но почему бы не добавить их везде для единообразия, удобства, чистоты и читабельности?
Подробнее здесь:
https://stackoverflow.com/questions/784 ... -funcitons