как добавить список <T>, возражают против другого

Приезжайте в людей, считайте целую кавычку, считайте ее тщательно. Или еще лучше, прочитайте эссе.

Paul Graham критикует, среди прочего, подобный языкам C для того, чтобы не обеспечивать соответствующие средства абстракции. В рамках эссе его критика шаблонов является запоздалой мыслью, или скорее рассматриваемым вопросом для его основного аргумента. Его обоснование идет как это:

логично использовать общие стратегии решить повторяющиеся проблемы. На действительно абстрактных языках возможно формализовать те стратегии и поместить их в библиотеку. Каждый раз, когда необходимо использовать их, Вы просто #include их, инстанцировать их, развернуть их, или что бы то ни было. Подобный языкам C по контрасту не обеспечивают необходимые средства абстракции. Это засвидетельствовано тем, что там существует что-то как "шаблоны". Шаблон является такой общей стратегией, которой не может выразить код библиотеки и таким образом нужно выразительно записать каждый раз, когда это применяется.

Paul Graham не думает, что шаблоны являются злыми собой. Они - признак языков, которые терпят неудачу в обеспечении средств абстракции. В этом отношении он почти наверняка прав. Должны ли мы использовать различные языки из-за этого, конечно, другое обсуждение.

исходный плакат вопроса, с другой стороны, является неправильным: Шаблоны не являются "признаками не наличия недостаточной абстракции в Вашем коде", но являются признаками наличия недостаточного количества средств абстракции на Вашем языке.

84
задан BCS 19 September 2009 в 22:45
поделиться

1 ответ

Если вы хотите добавить копии элементов в B, вы можете сделать:

a.insert(a.end(), b.begin(), b.end());

Если вы хотите переместить элементы из B в конец A (одновременно опустошив B), вы можете сделать:

a.splice(a.end(), b);

В вашей ситуации сращивание было бы лучше, так как оно просто включает настройку пары указателей в связанных списках.

177
ответ дан 24 November 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: