1

可能重复:
如何在结构或类的向量中快速搜索具有特定值的对象?C++

有没有比使用迭代器更快地在向量内找到具有某些参数的指定值的对象并在找到时停止的方法?我有矢量图

在哪里

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

2 回答 2

10

在不了解向量(排序或未排序等)的情况下,您可以获得的最快速度是线性时间(很像使用迭代器)。

但是你可以用std::find_if它来美化代码——尽管它仍然会在线性时间内运行。

如果您多次查询容器,您可能需要对其进行排序 ( O(n*log(n))),然后使用二分搜索 ( O(log(n)))。但这只有在查询数量与元素数量相当的情况下才有意义。

于 2012-06-26T12:54:04.197 回答
1
  • 如果您使用排序向量,则可以使用二进制搜索。
  • 您可以替换std::vector<Simple>std::map<int, std::string>.
于 2012-06-26T12:59:44.177 回答