Permalänk
Medlem

c++ copiera vector till list.

Hej!

jag ska med hjälp av copy kopiera en vector<int> och list<int>. dessutom ska jag ta hjälp av back_insert_iterator.
vilket fall så har jag läst om back_insert_iterator på http://www.cplusplus.com/reference/iterator/back_insert_iterator/, men det hjälper inte mig så mycket ändå. för jag är ganska säker på hur copy funkar tycker jag. iaf de jag har testat är:

back_insert_iterator< list<int> back_it (listcopy); copy(v.begin(), v.end(), back_it);

detta funkade inte så jag testade:
sedan har jag testa lite andra modeller som nu i efter hand känns korkade.
så jag undrar om någon kan hjälpa mig med detta
tack så mycket i förhand!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Hedersmedlem

Vad händer? Du verkar sakna en ">", men jag antar att det inte är huvudproblemet.

Permalänk
Medlem

Tyvärr är varken målet eller problemet speciellt tydligt så det är inte så lätt att hjälpa dig.

Länken om back_insert_iterator har ett fint exempel som visar hur den fungerar. Är det något speciellt du inte förstår? Har du testat köra exemplet?
Här är ett exempel på kopiering från vector till list.

#include <iostream> #include <iterator> #include <vector> #include <list> using namespace std; int main () { vector<int> my_vector; list<int> my_list; for (int i=1; i<=10; i++) { my_vector.push_back(i); } back_insert_iterator< list<int> > back_it (my_list); copy (my_vector.begin(),my_vector.end(),back_it); for (list<int>::iterator it = my_list.begin(); it != my_list.end(); ++it ) { cout << *it << " "; } cout << endl; return 0; }

Man kan också använda

list<int> my_list(my_vector.begin(),my_vector.end());

Permalänk
Medlem

ja, alså jag har testat lite olika kombinationener på back_insert_iterator och copy, det jag har är en tom lista och en vector med en miljon olika int värden som ska med hjälp av back_insert_iterator och copy copieras till listan, samt att jag ska beskriva vad som händer, hur back insert och copy funkar.

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem
Skrivet av Gbump:

Tyvärr är varken målet eller problemet speciellt tydligt så det är inte så lätt att hjälpa dig.

Länken om back_insert_iterator har ett fint exempel som visar hur den fungerar. Är det något speciellt du inte förstår? Har du testat köra exemplet?
Här är ett exempel på kopiering från vector till list.

funkade riktigt bra! men jag undra om du skulle kunna dra en förklaring på de hela för jag har inte riktigt förståt referencesarna på cplusplus.com

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

Kan inte C++ speciellt bra men i princip så fungerar copy så att den kopierar ett element från vectorn och skriver över ett element i listan. Målet för kopieringen anges som en iterator. Om listan man kopierar till inte har några element så skulle kopieringen inte fungera eftersom mål-iteratorn inte skulle kunna peka på ett element att skriva över.

back_insert_iterator är en speciell iterator som innebär att man istället för att skriva över ett element lägger till ett nytt element i slutet.

”Vanlig” iterator skriver över element.

*vanlig_it = my_list.back(); // 12945

back_insert_iterator sätter in elementet i slutet.

back_it = my_list.back(); // 123459

Hoppas det hjälper.

Permalänk
Medlem

tack! jag uppskattar din simpla förklaring!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6