C++ 使用不同的值初始化向量
我的结构如下:C++ 使用不同的值初始化向量,c++,C++,我的结构如下: enum model_class { ... }; struct SModelData { string m_strName; model_class m_class; vector<int> m_parts; int m_iSeats; SModelData(...) : ... {} }; const multimap<int, SModelData*> model
enum model_class
{
...
};
struct SModelData
{
string m_strName;
model_class m_class;
vector<int> m_parts;
int m_iSeats;
SModelData(...) : ... {}
};
const multimap<int, SModelData*> models_data =
{
{ 400, new SModelData("Landstalker", STUFF, ***, 4) },
...
};
enum模型\u类
{
...
};
结构SModelData
{
字符串m_strName;
模型级m级;
向量m_部分;
国际会议;
SModelData(…):…{}
};
常量多重映射模型=
{
{400,新SModelData(“陆地跟踪者”,STUFF,***,4)},
...
};
m_部件可以具有不同的int值(const)及其计数。
例如,401型将有:6661、6662、6669、6674;
402型:66696670;
等等
哪一个是得到这些东西的最好方法 将原始指针存储在STL容器中通常是一个坏主意,并且是bug的来源:
要初始化常量映射
,可以使用C++11初始值设定项列表或lambda,例如:
const auto models_data = []() -> map<int, SModelData> {
map<int, SModelData> data;
// ... Fill your map
return data;
}();
const auto models_data=[]()->map{
地图数据;
//…填满你的地图
返回数据;
}();
首先,我不建议在地图中有指向结构的指针。其次,您真的需要一个std::multimap
?一个键可以有多个值吗?第三,初始化向量的方式与初始化贴图的方式非常相似,使用括号括起来的列表创建一个向量。如果你不需要指针,那么你也不需要构造函数。@Someprogrammerdude,我把类型改为基本映射,谢谢。它与初始值设定项_list(也许)配合得很好,谢谢。谢谢你的回答!是的,我已经转移到地图而不是多重地图和SModelData而不是SModelData*。
const map<int, SModelData> models_data
const auto models_data = []() -> map<int, SModelData> {
map<int, SModelData> data;
// ... Fill your map
return data;
}();