0

`std::copy` を使用してあるベクトルを別のベクトルにコピーしようとしています

vector<note_name> notes =  AppSettings::getAllNotes();
copy(notes.begin(), notes.end(), song.noteList);

この関数は a をgetAllNotes()返し、vector<note_name>noteList は同じ型のパブリック メンバーです。実行しようとすると、次のようになります。

ここに画像の説明を入力

なので、ベクターが type を使っているのは何か問題があると思いますが、note_name直し方がわかりません。何か案は?

4

1 に答える 1

7

出力iteratorも必要です。noteListすでに必要なサイズがある場合は、次のように言います。

copy(notes.begin(), notes.end(), song.noteList.begin());

それが空で、コピーした範囲を挿入したい場合は、次の#include <iterator>ように言います。

copy(notes.begin(), notes.end(), std::back_inserter(song.noteList));


ただし、@Mike が指摘しているように、次のいずれかを言う方が簡単かもしれません。

song.noteList = notes;                            // keep both

AppSettings::getAllNotes().swap(song.noteList);   // dispose of the temporary
于 2012-08-29T23:10:07.280 に答える