Внимание: некоторые из того, что следует это мнение:
В информатике, есть только три интересные цифры:
Поскольку мы либо имеем дело с отсутствием чего-то, одного или нескольких вещей. Например, average(a0 , a1)
- частный случай average(a0, ...aI)
, где I - любое целое число в наборе (0 < = I < N).
Из этого следует, что std::pair
является логической специализацией N-кортежа и поэтому не нужен.
Хуже, используя pair
, предполагается, что количество элементов будет всегда равным 2, и выпекает это в интерфейсе. Это, очевидно, ошибка, так как мы торгуем способностью делать будущие неустойчивые изменения для нулевого выигрыша.
Когда СТЛ впервые была написана не было никаких VARIADIC шаблонов и было только три используют футляры для пар: -
как диапазон в результате equal_range
и т.п.
как итератор с состоянием возвращается из map::insert
и,
как пара ключ/значение в map
.
Затем форсирование сопровождалось его современными идеями, такими как кортежи. Будучи неофициальной библиотекой, boost смог смоделировать вариативные шаблоны со страницами и страницами автогенерированных перегрузок. Что-то, что немыслимо в стандартизованном API, который поставляется с каждым компилятором.
Теперь у нас есть вариативные шаблоны. За исключением случаев, когда, к сожалению, испекли в интерфейсах карт, нет никакой причины предпочесть pair
по сравнению с tuple
В эти современные времена структура с соответствующими именами намного превосходит «std :: pair» с членами с именем «first» и «second», а также с «std :: tuple» с членами named 'get <0>()' и 'get <1>()'. –
, если эти два значения связаны, ex employee id, имя сотрудника, тогда структура будет лучше, на мой взгляд. – ArmenB
Можете ли вы привести пример использования в вашем дизайне API? –