21xrx.com
2025-07-14 06:15:18 Monday
文章检索 我的文章 写文章
C++中的vector查找函数
2023-06-24 19:52:43 深夜i     15     0
C++ vector 查找函数

在C++中,vector是一种容器,可以将一些相同类型的数据储存起来。由于vector的动态大小和可以通过下标访问其元素,因此它是一种非常方便的数据结构。而在vector中查找元素也是非常常见的操作,因此C++中也提供了一些内置的查找函数。

在vector中查找元素最常见的方法是使用循环和条件判断,但是如果数据量较大,这会导致效率降低。因此,C++中提供了一些内置的查找函数,包括find、find_if、binary_search等。

在这些函数中,最常用的是find函数。find函数可以在一个vector中查找指定的元素,并返回一个迭代器,指向该元素在vector中的位置。如果vector中不存在该元素,则返回尾迭代器。下面是使用find函数的例子:

#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
  std::vector<int> vec = 4;
  auto it = std::find(vec.begin(), vec.end(), 3);
  if (it != vec.end()) {
    std::cout << "Found " << *it << " at position " << std::distance(vec.begin(), it) << std::endl;
  }
  else
    std::cout << "Not found" << std::endl;
  
  return 0;
}

输出结果如下:

Found 3 at position 2

除了find函数,C++中还提供了find_if和binary_search函数。find_if函数可以根据指定的条件对vector中的元素进行查找,并返回一个迭代器,指向符合条件的第一个元素。如果不存在符合条件的元素,则返回尾迭代器。这里的条件可以是一个自定义的函数或者函数对象。下面是使用find_if函数的例子:

#include <iostream>
#include <vector>
#include <algorithm>
bool is_even(int n)
  return n % 2 == 0;
int main()
{
  std::vector<int> vec = 1;
  auto it = std::find_if(vec.begin(), vec.end(), is_even);
  if (it != vec.end()) {
    std::cout << "Found " << *it << " at position " << std::distance(vec.begin(), it) << std::endl;
  }
  else
    std::cout << "Not found" << std::endl;
  
  return 0;
}

输出结果如下:

Found 2 at position 1

binary_search函数用于对已排序的vector进行二分查找。如果vector中存在指定的元素,则返回true;否则返回false。下面是使用binary_search函数的例子:

#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
  std::vector<int> vec = 1;
  bool found = std::binary_search(vec.begin(), vec.end(), 3);
  if (found)
    std::cout << "Found" << std::endl;
  
  else
    std::cout << "Not found" << std::endl;
  
  return 0;
}

输出结果如下:

Found

总之,在C++中,使用内置的查找函数可以大大提高编程效率。当我们需要在vector中查找元素时,可以选择适合的查找函数,而不是重复写循环和条件判断语句。

  
  

评论区