c++结构初始化数组
C++ Array of struct initialization
我真的不习惯在c++中编码,这可能是一个简单的问题,我无法得到正确的语法。
我基本上想要实现的是,从一个方法中,我声明一个结构数组(大小未指定),我调用一个方法,我传递这个数组。该方法应该初始化数组的值。我试图得到一个简单的代码工作,但得到错误。下面这段代码给了我一个编译错误。有人能指出如何做到这一点吗?
struct ABC
{
int a;
int b;
};
void test(ABC * a)
{
a[] = {{2,3},{4,5}};
}
int main() {
ABC arr[2];
test(arr);
}
编辑:
下面的工作,但我希望初始化工作在一行。
struct ABC
{
int a;
int b;
};
void test(ABC *a)
{
a[0].a = 2;
a[0].b = 3;
a[1].a = 4;
a[1].b = 5;
}
int main() {
ABC arr[2];
test(arr);
}
您可以使用这样的设置,利用c++标准库。用-std=c++11
标志编译它以允许我在push_back
中所做的初始化:
#include <vector>
#include <iostream>
struct ABC
{
int a;
int b;
};
void test(std::vector<ABC>& a)
{
a.push_back({2,3});
a.push_back({4,5});
}
int main()
{
std::vector<ABC> arr;
test(arr);
// Test the outcome...
std::cout << "The size is: " << arr.size() << std::endl;
for (ABC& a : arr)
std::cout << "Element (" << a.a << "," << a.b << ")" << std::endl;
return 0;
}
初始化a
数组中访问其索引的每个结构
void test(ABC * a)
{
a[0] = {2,3};
a[1] = {4,5};
...
这样{{2,3},{4,5}};
将在初始化时工作,即
ABC arr[2] = {
{2,3},
{4,5}
};
您必须首先找出数组的实际大小,然后进行迭代以初始化它。
不工作,见下文
void test(ABC* a) {
int value=2;
for (int i=0;i++;i<sizeof(a)/sizeof(ABC)) {
a[i].a=value;
a[i].b=value+1;
value+=2; } }
我不能100%确定sizeof(a)会给你数组的大小。如果这不起作用,则必须将数组的大小作为参数传递:
void test(ABC* a, int elements) {
int value=2;
for (int i=0;i++;i<elements) {
a[i].a=value;
a[i].b=value+1;
value+=2; } }
int main() {
ABC arr[2];
test(arr,2); }
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理