0

我正在尝试使用 `std::copy` 将一个向量复制到另一个向量

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

该函数getAllNotes()返回一个vector<note_name>和noteList 是同一类型的公共成员。当我尝试跑步时,我得到:

在此处输入图像描述

所以我认为 vector 使用 type 的事实存在一些问题note_name,但我不知道如何解决它。有任何想法吗?

4

1 回答 1

7

你也需要一个输出迭代器。如果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 回答