Reputation:
I'm trying to copy one vector to another using `std::copy``
vector<note_name> notes = AppSettings::getAllNotes();
copy(notes.begin(), notes.end(), song.noteList);
The function getAllNotes()
returns a vector<note_name>
and noteList is a public member of the same type. When I try to run I'm getting:
So I think there's some problem with the fact that the vector uses the type note_name
, but I don't know how to fix it. Any ideas?
Upvotes: 2
Views: 3833
Reputation: 1
2 methods I like from here are:
std::vector<int> v1({ 7, 6, 4, 5 });
std::vector<int> v2(v1);
assign()
function:std::vector<int> v1({ 7, 6, 4, 5 });
std::vector<int> v2;
v2.assign(v1.begin(), v1.end());
Upvotes: 0
Reputation: 476950
You need an output iterator, too. If noteList
already has the required size, say:
copy(notes.begin(), notes.end(), song.noteList.begin());
If it is empty and you want to insert the copied range, #include <iterator>
and say:
copy(notes.begin(), notes.end(), std::back_inserter(song.noteList));
However, as @Mike points out, it may be even simpler to say one of the following:
song.noteList = notes; // keep both
AppSettings::getAllNotes().swap(song.noteList); // dispose of the temporary
Upvotes: 9