在我的程序中,我想将一些变量传递给一个函数,并让该函数运行for循环以将数据写入控制台。
这是我的代码:
void WriteValue(int[] arr)
{
for(auto c : arr)
std::cout<<arr<<std::endl;
}
int main()
{
int a = 0;
int b = 1;
int c = 3;
WriteValue(a,b,c);
return 0;
}
我知道这可以在C#中使用params,但我没有那个选项。如何让它在C ++中运行?
答案 0 :(得分:3)
这是一种非常简单灵活的方式:
#include <iostream>
template<typename T>
void WriteValue(const T& arr)
{
for(auto c : arr)
std::cout << c << std::endl;
}
int main()
{
int a = 0;
int b = 1;
int c = 3;
WriteValue(std::array<int, 3>{a,b,c});
// nicer C99 way: WriteValue((int[]){a,b,c});
return 0;
}
如果你只想传递一个int列表(并且它必须是一个以大括号分隔的列表,而不是一个现有的数组),你可以改为
#include <iostream>
#include <initializer_list>
void WriteValue(const std::initializer_list<int>& arr)
{
for(auto c : arr)
std::cout << c << std::endl;
}
int main()
{
int a = 0;
int b = 1;
int c = 3;
WriteValue({a,b,c});
return 0;
}
不幸的是,VS2012 doesn't support this.您可以升级到Visual 2013(Express Edition和Community Edition都是免费的),或者您可以使用辅助变量:
#include <iostream>
template<typename T>
void WriteValue(const T& arr)
{
for(auto c : arr)
std::cout << c << std::endl;
}
int main()
{
int a = 0;
int b = 1;
int c = 3;
int args[] = { a, b, c };
WriteValue(args);
return 0;
}