我正在寻找向量元素到另一个向量中的位置。在这里,我有兴趣使用与binary search
一样快的实现。我有不同的长度为100万或更多的矢量,所以我试图更快地实现。在我的情况std :: vector中的二进制搜索
以下几种情况:
1)vector
在我寻找排序。
2)元素我正在寻找将永远存在即我没有的not found
的情况下,我想获得向量元素的索引以更快的方式。
我试过下面的代码来获取向量元素的索引。
#include <iostream>
#include <vector>
#include <algorithm>
template<class Iter, class T>
Iter binary_find(Iter begin, Iter end, T val)
{
Iter i = std::lower_bound(begin, end, val);
return i;
}
int main() {
std::vector<std::string> values = {"AAAAAA","AB", "AD" ,"BCD","CD", "DD" };
std::vector<std::string> tests = {"AB", "CD","AD", "DD"};
for(int i=0 ; i < tests.size(); i++) {
int pos = binary_find(values.begin(), values.end(), tests.at(i))- values.begin();
std::cout << tests.at(i) << " found at: " << pos <<std::endl;
}
return 0;
}
我想知道如果代码与二进制搜索实现匹配。??
有没有更快的方法来获得向量元素的索引?
有任何进一步的建议,以改善此代码。
如果您发现自己在做这么多关键性能的搜索,您可能需要考虑某种关联容器。 – TartanLlama