檢查vector中是否包含給定元素

20170405發表於2020-08-29

  std::count

  最簡單的方式是對vector中的指定元素進行計數,如果count不為零,表示該元素存在,那麼std::count可以很容易實現。

  #include

  #include

  #include

  int main()

  {

  std::vector v = { 1, 20, 2, 6, 3, 7 };

  int key = 6;

  if (std::count(v.begin(), v.end(), key))

  std::cout << "Element found";

  else

  std::cout << "Element not found";

  return 0;

  }

  std::find

  相比第一種方式,std::find()演算法能夠更快速的查詢給定範圍內的值,因為std::count()會變數整個容器以獲得元素計數,而find()在找到匹配元素後就立即停止搜尋。

  #include

  #include

  #include

  int main()

  {

  std::vector v = { 1, 20, 2, 6, 3, 7 };

  int key = 6;

  if (std::find(v.begin(), v.end(), key) != v.end())

  std::cout << "Element found";

  else

  std::cout << "Element not found";

  return 0;

  }

  std::find_if

  和find相似的還有一個叫 std::find_if()演算法,如果查詢需要滿足某些條件,那麼推薦使用該方法。這裡我們可以結合lambda來使用,非常簡潔。

  比如,要查詢列表中是否有元素能被5整  

  #include

  #include

  #include

  int main()

  {

  auto lst = {1,4,9,5,11};

  if(std::find_if(lst.begin(),lst.end(),[](auto v){

  if(v%5 ==0)

  return true;

  else

  return false;

  }) != lst.end()){

  std::cout << "Element found";

  }

  else{

  std::cout << "Element not found";

  }

  return 0;

  }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69979119/viewspace-2715708/,如需轉載,請註明出處,否則將追究法律責任。

相關文章