如何使用数值数组文字
How to use a numerical array literal
我想只使用一次数组,并且不想为它声明名称,例如,像
这样的东西int a,b,c;
void foo(int[],int);
...
a=1; b=2; c=3;
foo({a,b,c},3);
...
我很确定这是行不通的,但是我怎样才能使它工作呢?
如果您使用std::vector
或std::array
,事情会变得更容易。
void foo(std::vector<int> xs)
{
for (const auto& x : xs)
{
std::cout << x << ' ';
}
}
int main()
{
foo({ 10,11,12 });
}
如果您只想使用数组"literal"一次,请考虑对std::array
的右值引用:
// Declaration:
template<size_t s>
void foo(std::array<int, s>&& arr) {
// ....
}
//Call:
foo(std::array<int, 3>{1,2,3});
使用std::vector
或std::array
作为Nicky C的答案是更好的。
但要回答你的问题,你可以这样做:
void foo(int[],int);
int main()
{
foo(std::vector<int>{10, 11, 12}.data(), 3);
}
另一种尚未提到的方法是使用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)
{
}
相关文章:
- 将特定索引处的字符数组内容与字符文字 - cpp 进行比较
- 字符串文字到 char 数组的转换如何在C++中实际工作
- 多字符文字到字符数组
- 为什么具有单独字符的字符数组不像字符串文字那样以 null 终止符结尾?
- C 指针可以指向字符串文字的静态成员数组
- 初始化char数组和具有整数文字的char时的差异
- 为什么 clang 将字符串文字作为指针而不是数组
- 使用C++用户定义的文字来初始化数组
- 将C数组文字转换为在C 构造函数中工作
- 为什么gcc允许字符串文字大于数组的char数组初始化
- 在C 中,这是用字符串文字初始化char数组的好习惯
- 设置数组一次索引很多?复合文字
- 为什么我需要一个类似于复合文字的临时构造来初始化我的std::数组成员
- C++:直接在参数列表中使用数组文字的对象构造函数
- 如何在C++中使用字符串文字初始化字符的动态数组
- 文字字符数组
- 数组文字语法怪癖
- C++中的2D数组文字
- 如何使用数值数组文字
- 字符数组文字的创建位置和方式