我有一个结构向量如下
struct myStruct{
size_t aID;
int bID;
double tobeUpdated;
};
std::vector<myStruct> myVec;
如何在 C++11 中以有效的方式查找和更新myVec
满足的成员?aID == someId && bID == otherID
假设只有一个要更新。
// what to search for
size_t aID = 5;
int bID = 7;
find_if(vec.begin(), vec.end(), [aID, bID](const myStruct& obj) { return obj.aID == aID && obj.bID == bID; });
如果你想让它更高效,这真的取决于你对struct
and 数组的使用。如果可能根据您的使用方式,那么我会将它们存储在一个std::map
代替。这将允许基于 ID 或可能的 ID 组合轻松查找。但是,如果它实际上并没有明显减慢您的系统速度,那么我会说放弃优化并使用该测试迭代每个索引。