【发布时间】:2011-05-22 17:54:24
【问题描述】:
我使用映射作为 ID 的关联数组 -> 值,其中值是定义对象的结构:
#include <map>
struct category {
int id;
std::string name;
};
std::map<int, category> categories;
int main() {
categories[1] = {1, "First category"};
categories[2] = {2, "Second category"};
}
上面的代码用g++编译,但是有以下警告:
warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
我在这里阅读了有关结构初始化的各种问题/答案,但我仍然有点困惑。我有一系列相关问题:
我可以添加编译器选项 -std=c++0x 并完成警告,但仍然对潜在问题一无所知。如果我在类别结构中添加一个方法,事情不会中断吗?
以更符合 C++03 的方式初始化此 POD 结构(类别)的最佳方法是什么?
基本上,我还不确定以一种方式而不是另一种方式做事的后果。这种关联数组(其中键是对象的 ID)在 PHP 中很容易,我仍在学习在 C++ 中正确的方法。在上面的代码上下文中我有什么需要注意的吗?
编辑
以下问题是相关的,但我第一次看的时候没看懂答案:
C++ initialize anonymous struct
c++ Initializing a struct with an array as a member
Initializing structs in C++
【问题讨论】:
标签: c++ map struct initialization associative-array