تبدیل std::set به std::vector - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تبدیل std::set به std::vector

+2 امتیاز

برای تبدیل std::set به std::vector از روش زیر استفاده ولی خطا میده.

std::set <int> src;
src.insert(1);
src.insert(2);
src.insert(3);
src.insert(4);

std::vector <int> dst;
std::copy(src.begin(), src.end(), dst.begin());

مشکل کجاست؟

سوال شده مهر 25, 1393  بوسیله ی hojat1 (امتیاز 875)   12 69 99

2 پاسخ

+2 امتیاز
 
بهترین پاسخ
البته از back_inserter هم می تونید بدون resize استفاده کنید.
#include <set>
#include <vector>
#include <iterator>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

	std::set<int> set1 = { 1, 2, 3 };
	std::vector<int> vec1;
	std::copy(set1.begin(), set1.end(), std::back_inserter(vec1));

	
	return 0;
}

 

 

پاسخ داده شده مهر 26, 1393 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد دی 30, 1393 بوسیله ی BlueBlade
+1 امتیاز

باید قبل از copy  به اندازه ای که نیاز هست ریسایز هم بکنید .

	std::vector <int> dst(src.size());//inkhat
	std::copy(src.begin(), src.end(), dst.begin());

 

ضمنا جاهایی که می خواهید عنصر با مقدار اضافه کنید به set یا وکتور و ...  استفاده از emplace بهینه تر و بهتر  از insert هست .(آیتم 18 کتاب effective modern c++)

پاسخ داده شده مهر 26, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
...