将vector <vector <int >>元素的值存储在单独的容器中

时间:2019-01-31 08:07:17

标签: c++ stl

我的代码中具有以下结构:

std::vector<std::vector<int>> elems;

和elems中的每个元素(即,每个int向量)都有一定的double值,我需要跟踪该值。元素没有任何可以用作映射键的独特功能(我很难使用它们的指针,但是在程序执行过程中,elems向量不断增长并被改组,因此它们的地址会发生变化。)

考虑到这一点,我想到了创建一个包含向量和double的类并以这种方式修改结构:

std::vector<MyClass> elems;

因此具有直接的价值,但是我不知道这会影响性能。 有没有人有更好的解决方案,或者可以指出我可以找到有关此案例的更多信息的地方?
谢谢大家。

1 个答案:

答案 0 :(得分:3)

  

我想到了创建一个包含一个向量和一个double的类,并以这种方式修改结构:

std::vector<MyClass> elems;

double值与整数集合一起分组是绝对有效和合理的选择。我建议像这样使用普通的struct

struct DoubleAndVec {
    double value;
    std::vector<int> vec;
};

花点时间思考好名字,这在这里是必不可少的(MyClass,例如DoubleAndVec可以得到改善)。

关于性能,在遇到瓶颈之前不要考虑它。如果这样做,请分析并检查此设计选择是否对程序性能有任何影响-我非常怀疑。