چطوری میشه یک vector رو به ته خودش اضافه کرد ؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چطوری میشه یک vector رو به ته خودش اضافه کرد ؟

+1 امتیاز

سلام من یک Vector دارم به این شکل :

  vector<string> s = {"abc", "777"}

می خوام خروجیم این بشه :

vector<string> s = {"abc", "777", "abc", "777"}

از insert استفاده کردم ولی درست کار نمی کنه

s.insert(s.end(), s.begin(), s.end());

 

چکار کنم ؟

سوال شده بهمن 26, 1392  بوسیله ی نظری (امتیاز 62)   5 10 13
دوباره تگ گذاری شد شهریور 5, 1393 بوسیله ی BlueBlade

2 پاسخ

+4 امتیاز
 
بهترین پاسخ

بجای insert در انتها در ابتدا درج کنید.


s.insert(s.begin(), s.begin(), s.end());

 

در روش بالا iterator های موجود پس از اینکار نامعتبر میشن ولی جهت معتبر ماندن iterator های موجود می تونید از روش زیر استفده کنید.

 

auto old_count = s.size();
s.reserve(2 * old_count);
std::copy_n(s.begin(), old_count, std::back_inserter(s));

 

پاسخ داده شده بهمن 28, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد بهمن 28, 1392 بوسیله ی نظری
+4 امتیاز

این شاید حریصانه ترین راه باشه ولی جواب میده

vector <string> v = {"123" ,"abc"};
	int temp = v.size();
	for (int i = 0; i < temp; i++)
		v.push_back(v[i]);

 

پاسخ داده شده بهمن 27, 1392 بوسیله ی Elyas74 (امتیاز 1,144)   6 14 27
برای performance بیشتر بهتره قبل از loop  از
v.reserve(temp* 2); 

هم استفاده کنین .
...