ارسال n متغیر به تابع و ساخت مستقیم وکتور از روی آن ها - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ارسال n متغیر به تابع و ساخت مستقیم وکتور از روی آن ها

+3 امتیاز

آیا راهی وجود داره که بشه n تا متغیر رو فرستاد به یک تابع و روی این متغیر ها یک وکتور ساخت ؟ (بدون این که نیاز به نوشتن تابع بازگشتی باشه )

template<class T,class...Args>
std::vector<T> do_works(cosnt Args&...args)
{
	//inja mikham yek vector<T> az rooye args besazam
       //.........
}
///
auto r=do_works<int>(1,2,3,4,5);

 

سوال شده دی 7, 1393  بوسیله ی Mad (امتیاز 245)   10 35 47

1 پاسخ

+1 امتیاز

اگر بدون کپی و با move بخواهید این کارو انجام بدید باید اولا ورودی تابع rvalue refrence باشه و از std::forward استفاده کنید .

#include <iostream>
#include <vector>
#include <string>

template<class T, class...Args>
std::vector<T> do_works(Args&&...args)//const Args& kar nemikone
{
	std::vector<T> r{ std::forward<Args>(args)... };
	//...
	return r;
}
///
int main()
{
	std::string str="qwe";
	auto r = do_works<std::string>("a","b","cc",std::move(str));

	//az in ja be bad dg az str nabayad estefade beshe chon move shode

	for (const auto& elem : r)
		std::cout << elem << " ";
}

 

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