在 C++ 98 中的对向量中按键查找对
Find pair by key within a vector of pairs in C++ 98
我正在使用以下版本,将无法使用 C++11g++ (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973].
我有一个对向量。
std::vector<std::pair<int, std::string> > vec;
vec.push_back(std::make_pair(5, std::string("tata")));
vec.push_back(std::make_pair(6, std::string("tat2")));
vec.push_back(std::make_pair(7, std::string("tat3")));
vec.push_back(std::make_pair(8, std::string("tat4")));
现在我可以使用迭代器使用对中的键搜索向量中的所有元素,例如
std::vector<std::pair<int, std::string> >:: iterator it ;
for (it = vec.begin(); it != vec.end(); ++it)
{
if (it->first == item)
{
cout << "Found " << item << "n";
return 0;
}
}
我希望有没有可能的方法在 C++98 中使用 std::find 操作,因为我搜索了相关帖子,其中大多数都解决了 C++ 11 中支持的内容。
C++11 只是使代码更加简洁。在C++11中,我们可以这样写:
std::find_if(vec.begin(), vec.end(), [&](std::pair<int, std::string> const & ref) {
return ref.first == item;
});
现在,在 C++98 中,该 lambda 将更加冗长:
class SearchFunction {
public:
SearchFunction(int item): item_(item) {}
bool operator()(std::pair<int, std::string> const & ref) {
return ref.first == item_;
}
private:
int item_;
};
std::find_if(vec.begin(), vec.end(), SearchFunction(item));
像SearchFunction
这样的类通常被称为函子。
相关文章:
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 以C++递归方式查找向量中的最大值
- C++如何在向量中查找最常见的元素
- 查找两个排序向量中共有的元素
- 这是查找向量中元素位置的合法方法吗?
- 使用 C++ 查找向量的中值
- 查找向量的平均值
- 查找向量的一个向量的元素是否存在于另一个向量中
- 查找向量中数字的出现次数(以C++为单位)
- 查找向量C++中变量之间的百分比差异
- 查找向量中的最小值
- 迭代和递归地查找向量中是否存在元素
- 查找向量中的值索引位置
- 查找向量中的 n 个最大值
- 如何查找向量中元素的最大和最小索引
- 查找向量中小于阈值(复杂度)的所有数字
- 查找向量中某个元素的所有引用的索引
- 查找向量中最小+最大值元素的函数
- 在c++中查找向量中的值的差
- 如何在 C++ 中查找向量的第 m 和第 n 个元素之间的 max 元素