2017-06-08 10 views
-2

Concatenating two std::vectorsに従って)別のベクトルを付加するための勧告を使用することである。なぜstd :: vectorに追加メソッドがないのですか?

vector1.insert(vector1.end(), vector2.begin(), vector2.end()); 

なぜベクトルはのラインに沿った方法がありません:

vector1.append(vector2); 

来る唯一の理由を追加するものが正確には不明であるかもしれないということです。

+2

なぜあなたはすでにやることができる別の方法が必要ですか? –

+1

存在しない技術的理由はありません。むしろ、完全に機能する(肥大化したと言う)か、簡潔で簡潔な(一部は不完全だと思われる)インターフェースが必要なのかという疑問です。それは好みの問題です。 –

+3

があります。おそらく 'append'は' insert'の特殊なケースにすぎないでしょう。 'insert'は何かの最後に何かを置くよりもはるかに多くを行うことができます。 –

答えて

2

これはかなり良い理由です。実際、適切な例として、私はあなたが間違って "追加"の意味を持っていると思います。私はそれがpush_back(それは存在する)と同等であると期待していますが、あなたは「連結」のようなものを探しています。

なぜconcatenate機能はありませんか?まあ、あったかもしれない。しかし、標準では、あなたが本当に必要としないものを提供するのが好きではありません(あなたが示したように)、この操作は自分で実装するのがかなり簡単です。

+0

これと同じ引数は、 'insert'、' erase'、 'begin'、' end'以外のメソッドにも適用できます。これらのメソッドのほかに 'vector'はすべて実装するのは簡単ですが、それぞれのプロジェクトで一般的に使用される、単純なもの(おそらく異なる名前)を再実装したくないので、' push_back'と 'size'も提供されます。 –

+1

@MatteoItalia:委員会にそれを提案してください。しかし、私はこれがどのように私が提起したものを超えて答えることができないのか分かりません。 –

関連する問題