我想只使用一次数组,并且不想为它声明一个名称,例如
int a,b,c;
void foo(int[],int);
...
a=1; b=2; c=3;
foo({a,b,c},3);
...
我很确定这不起作用,但我怎样才能使它工作?
答案 0 :(得分:2)
如果您使用std::vector
或std::array
,事情会变得更轻松。
void foo(std::vector<int> xs)
{
for (const auto& x : xs)
{
std::cout << x << ' ';
}
}
int main()
{
foo({ 10,11,12 });
}
答案 1 :(得分:0)
如果你想使用数组&#34; literal&#34;只考虑一次,考虑对std::array
的右值引用:
// Declaration:
template<size_t s>
void foo(std::array<int, s>&& arr) {
// ....
}
//Call:
foo(std::array<int, 3>{1,2,3});
答案 2 :(得分:0)
另一种未提及的方法是使用std::initializer_list
。
#include <initializer_list>
void foo(std::initializer_list<int> lst,int i)
{
}
int main()
{
int a,b,c;
a=1; b=2; c=3;
foo({a,b,c},3);
}
或者您可以使用模板。
template<typename T, std::size_t N>
void foo(const T (&lst)[N],int i)
{
}
答案 3 :(得分:0)
在Nicky C的回答中使用std::vector
或std::array
会更好。
但要按原样回答你的问题,你可以这样做:
void foo(int[],int);
int main()
{
foo(std::vector<int>{10, 11, 12}.data(), 3);
}