我的代码中具有以下结构:
std::vector<std::vector<int>> elems;
和elems中的每个元素(即,每个int向量)都有一定的double值,我需要跟踪该值。元素没有任何可以用作映射键的独特功能(我很难使用它们的指针,但是在程序执行过程中,elems向量不断增长并被改组,因此它们的地址会发生变化。)
考虑到这一点,我想到了创建一个包含向量和double的类并以这种方式修改结构:
std::vector<MyClass> elems;
因此具有直接的价值,但是我不知道这会影响性能。
有没有人有更好的解决方案,或者可以指出我可以找到有关此案例的更多信息的地方?
谢谢大家。
答案 0 :(得分:3)
我想到了创建一个包含一个向量和一个double的类,并以这种方式修改结构:
std::vector<MyClass> elems;
将double
值与整数集合一起分组是绝对有效和合理的选择。我建议像这样使用普通的struct
struct DoubleAndVec {
double value;
std::vector<int> vec;
};
花点时间思考好名字,这在这里是必不可少的(MyClass
,例如DoubleAndVec
可以得到改善)。
关于性能,在遇到瓶颈之前不要考虑它。如果这样做,请分析并检查此设计选择是否对程序性能有任何影响-我非常怀疑。