21xrx.com
2024-12-22 21:46:46 Sunday
登录
文章检索 我的文章 写文章
C++中的vector查找函数
2023-07-13 20:02:44 深夜i     --     --
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 = 5;

  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 = 3;

  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中查找元素时,可以选择适合的查找函数,而不是重复写循环和条件判断语句。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复