3

std::list の最初の N 個の要素、または N >= リスト サイズ (および N = 0 も処理する) の場合のリスト全体である新しいリストを取得するための正しく安全な方法は何ですか?

アップデート

実際、必ずしも新しいリストが必要なわけではなく、後続のコードでリストのサブセットを操作したいだけです。これを行うには、新しいリストを作成するのが妥当な方法だと思います (リストのサイズは通常 50 未満であることに注意してください)。

4

3 に答える 3

9
std::list<int> a;
size_t n = 13;
auto end = std::next(a.begin(), std::min(n, a.size()));

最初のリストの最初の n 個の要素を含む新しいリストを作成します。

std::list<int> b(a.begin(), end);

または、既存のリストに入力します。

std::list<int> b;
std::copy(a.begin(), end, std::back_inserter(b));
于 2013-04-09T15:40:11.650 に答える
4
// list<int> input;
list<int> output;
for (list<int>::const_iterator i = input.begin(); i != input.end() && N > 0; ++i, --N)
    output.push_back(*i);
于 2013-04-09T15:38:57.577 に答える