2012-08-29 143 views
0

我想一個載體複製到另一個使用'的std :: copy``複製載體矢量

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

getAllNotes()返回vector<note_name>和noteList是相同類型的公共成員函數。當我嘗試運行我得到:

enter image description here

因此,我認爲有一些問題與載體使用類型note_name的事實,但我不知道如何解決它。有任何想法嗎?

回答

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 
+4

雖然意圖可能被'song.noteList =筆記更清楚地表示;'(或'song.noteList.assign(notes.begin(),notes.end())'如果容器類型不同)。 –

+0

@MikeSeymour:哦,當然 - 謝謝! –