在向量中找到元素与属性

时间:2012-06-26 12:52:29

标签: c++ stl

  

可能重复:
  How to make a fast search for an object with a particular value in a vector of structs or classes? c++

使用某个参数的指定值比使用迭代器更快地找到向量内的对象并在找到时停止吗?我有载体

,其中

class Simple{
public:
string name;
int id;
}

2 个答案:

答案 0 :(得分:10)

在不知道任何关于向量的情况下(排序与否等),你可以获得的最快线性时间(就像使用迭代器一样)。

但您可以使用std::find_if来美化代码 - 尽管它仍然会以线性时间运行。

如果您多次查询容器,可能需要对其进行排序(O(n*log(n))),然后使用二进制搜索(O(log(n)))。但是,如果查询数量与元素数量相当,则只需支付费用。

答案 1 :(得分:1)

  • 如果使用有序向量,则可以使用二进制搜索。
  • 您可以将std::vector<Simple>替换为std::map<int, std::string>