在c++中创建结构体数组
creating an array of structs in c++
我正在尝试创建一个结构体数组。下面的代码有效吗?我一直得到一个expected primary-expression before '{'
令牌错误。
int main() {
int pause;
struct Customer {
int uid;
string name;
};
Customer customerRecords[2];
customerRecords[0] = {25, "Bob Jones"};
customerRecords[1] = {26, "Jim Smith"};
cin >> pause;
return 0;
}
试试这个:
Customer customerRecords[2] = {{25, "Bob Jones"},
{26, "Jim Smith"}};
在struct
被初始化后,不能使用初始化列表。在声明数组customerRecords
时,已经默认初始化了两个Customer
结构体。因此,你要么使用成员访问语法来设置非静态数据成员的值,在声明数组本身时使用初始化列表列表初始化结构,要么为你的结构创建一个构造函数并使用默认的operator=
成员函数初始化数组成员。
所以下列任意一个都可以:
Customer customerRecords[2];
customerRecords[0].uid = 25;
customerRecords[0].name = "Bob Jones";
customerRecords[1].uid = 25;
customerRecords[1].namem = "Jim Smith";
或者如果你为你的结构定义了一个构造函数,如:
Customer::Customer(int id, string input_name): uid(id), name(input_name) {}
你可以这样做:
Customer customerRecords[2];
customerRecords[0] = Customer(25, "Bob Jones");
customerRecords[1] = Customer(26, "Jim Smith");
或者你可以使用Tuomas在他的回答中使用的初始化列表序列。他的初始化列表语法之所以有效,是因为您实际上是在声明数组时初始化Customer
结构,而不是允许在声明聚合数据结构(如数组)时对结构进行默认初始化。
一些编译器支持复合文字作为扩展,允许这样的结构:
Customer customerRecords[2];
customerRecords[0] = (Customer){25, "Bob Jones"};
customerRecords[1] = (Customer){26, "Jim Smith"};
但是不方便携带
效果很好。我有gcc编译器c++ 11准备好了。试试这个,你会看到:
#include <iostream>
using namespace std;
int main()
{
int pause;
struct Customer
{
int uid;
string name;
};
Customer customerRecords[2];
customerRecords[0] = {25, "Bob Jones"};
customerRecords[1] = {26, "Jim Smith"};
cout << customerRecords[0].uid << " " << customerRecords[0].name << endl;
cout << customerRecords[1].uid << " " << customerRecords[1].name << endl;
cin >> pause;
return 0;
}
可以使用vector。首先定义Struct
struct Customer {
int uid;
string name;
};
,
vector<Customer> array_of_customers;
通过使用vector,您将在结构数组中拥有更大的自由度和访问权限。
现在如果想在定义数组中添加一个struct元素。你可以使用
array_of_customer.push_pack(/* struct element here */)
的例子:
Customer customer1;
customer1.uid = 01;
customer1.name = "John Doe";
Customer customer2;
customer2.uid = 02;
customer2.name = "Blah Blah";
array_of_customers.push_back(customer1);
array_of_customers.push_back(customer2);
你现在有一个struct数组
相关文章:
- 按结构体的特定成员对结构体数组进行排序
- 如何调用一个函数,它在一个单独的类中打印出一个结构体数组
- 如何创建一个结构体数组
- 初始化用于pthread的结构体数组
- 如何将文件的行读入结构体数组
- 结构体数组,非常量大小
- 无法将结构体数组传递给函数
- 确定它用作参数的结构体数组的大小
- 如何将结构体数组的单个成员数组传递给函数以执行线性搜索
- 如何使用std::binary_search或std::sort对结构体数组进行排序
- c++中对结构体数组使用排序选择
- 在c++中将结构体数组平整化为多个数组
- 在c++中创建结构体数组
- 不能操作由字符串组成的结构体数组
- 传递结构体数组的预期非限定id错误
- 将c++中的结构体数组传递给swift
- 尝试创建一个函数,将数据从文件读取到结构体数组中
- 在c++中创建结构体数组
- 添加并列出一个结构体数组
- Arduino编程中的结构体数组