C++ 11 では、要素をコピーせずstd::vector
に、指定された関数 (API を変更できない) によって返される多くの s をコンテナーに蓄積することは可能ですか?std
std::vector<int> make_vect();
container acc; // what is container?
do {
acc.append(std::move(make_vect())); // how to implement this?
} while(acc.size() < n);
例のように移動代入演算子の移動コンストラクターがない場合でも、要素をコピーしてはならないことに注意int
してください。そのため、要素のチャンクを (ポインターをコピーして) 移動することはできますが、個々の要素を移動することはできません。
単一のイテレータを使用して、すべてのcontainer
累積された要素を反復できるようにする必要があることに注意してください。そのようなものは許可されていません。std::vector<std::vector<>>
明らかに、これを許可するコンテナを作成するかstd::list<std::vector<>>
、独自のイテレータを使用して提供するのは簡単ですが、std
ライブラリは、そのようなユーザー作成の追加なしで目的の機能を提供しますか?
要求された機能は特に突飛なものではないようで、C++11 を使用しても (不可能ではないにしても) 難しいことに驚いています。