如何确定一个项目是否存在于STD:向量中?

如何确定一个项目是否存在于STD:向量中?

我所要做的就是检查向量中是否存在一个元素,这样我就可以处理每一种情况。

if ( item_present )
   do_this();else
   do_that();


幕布斯7119047
浏览 533回答 3
3回答

ITMISS

你可以用std::find从…<algorithm>:#include&nbsp;<vector>vector<int>&nbsp;vec;&nbsp;//can&nbsp;have&nbsp;other&nbsp;data&nbsp;types&nbsp;instead&nbsp;of&nbsp;int&nbsp;but&nbsp;must&nbsp;same&nbsp;datatype&nbsp;as&nbsp;item&nbsp;std::find(vec.begin(),&nbsp;vec.end(),&nbsp;item)&nbsp;!=&nbsp;vec.end()这会返回一个bool(true如果有,false否则)。以你为例:#include&nbsp;<algorithm>#include&nbsp;<vector>if&nbsp;(&nbsp;std::find(vec.begin(),&nbsp;vec.end(),&nbsp;item)&nbsp;!=&nbsp;vec.end()&nbsp;) &nbsp;&nbsp;&nbsp;do_this();else &nbsp;&nbsp;&nbsp;do_that();

互换的青春

正如其他人所说,使用STLfind或find_if职能。但是,如果在非常大的向量中搜索,这会影响性能,则可能需要对向量进行排序,然后使用binary_search,&nbsp;lower_bound,或upper_bound算法。

牛魔王的故事

在stl的算法头中使用Find,我已经说明了它在int类型中的使用。您可以使用任何您喜欢的类型,只要您可以比较是否相等(重载=,如果您需要为您的自定义类)。#include&nbsp;<algorithm>#include&nbsp;<vector>using&nbsp;namespace&nbsp;std;int&nbsp;main(){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;vector<int>&nbsp;IntContainer; &nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;IntContainer::iterator&nbsp;IntIterator; &nbsp;&nbsp;&nbsp;&nbsp;IntContainer&nbsp;vw; &nbsp;&nbsp;&nbsp;&nbsp;//... &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;find&nbsp;5 &nbsp;&nbsp;&nbsp;&nbsp;IntIterator&nbsp;i&nbsp;=&nbsp;find(vw.begin(),&nbsp;vw.end(),&nbsp;5); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&nbsp;!=&nbsp;vw.end())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;found&nbsp;it &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;doesn't&nbsp;exist &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
打开App,查看更多内容
随时随地看视频慕课网APP