Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用不同的值初始化向量_C++ - Fatal编程技术网

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;
}();