c++ - 用不同的值初始化 vector

标签 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*> models_data =
{
    { 400, new SModelData("Landstalker", STUFF, ***, 4) },
    ...
};

m_parts 可以有不同的 int 值 (const) 和它们的数量。 例如。型号 401 将具有:6661、6662、6669、6674; 型号 402:6669、6670; 等

获得这些东西的最佳方式是什么?

最佳答案

raw 拥有存储在 STL 容器中的指针通常不是一个好主意,也是错误的来源:

const multimap<int, SModelData*> models_data =

我更喜欢使用智能拥有指针(例如 shared_ptr<SModelData> 用于共享所有权语义,或 unique_ptr<SModelData> 用于唯一所有权语义),或者只使用 SModelData 值(value)观

此外,您确定要使用multimap吗? ?

也许是 map有值(value)观就好了?

例如:

const map<int, SModelData> models_data

初始化你的 const map ,您可以只使用 C++11 初始化列表或 lambda,例如:

const auto models_data = []() -> map<int, SModelData> {
    map<int, SModelData> data;

    // ... Fill your map

    return data;
}();

关于c++ - 用不同的值初始化 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40280125/

相关文章:

c++ - 指向非 volatile 数据的 volatile 指针

c++ - 在 C++ 中的 vector 中使用 push_back vs at

c++ - 使用 OpenGL 和 GLFW 的简单三角形

c++ - QGridLayout 中的 Qt 空白列?

c++ - 对多个类使用一个 SDL2 渲染器

c++ - 调试以 CREATE_SUSPENDED 启动的任何进程时很少出现 EXCEPTION_ACCESS_VIOLATION

c++ - 这跨线程安全吗?

c++ - 传递动态分配的二维字符数组会导致段错误?

c++ - const 将公共(public)成员引用到私有(private)类成员 - 为什么它有效?

c++ - 模板友元函数重载