是否有可能使用std::find()
以搜索與1調用多個元素?例如:std::find(vector.begin(), vector.end(), 0&&1&&D)
使用std ::發現在搜索多個元素()
由於
是否有可能使用std::find()
以搜索與1調用多個元素?例如:std::find(vector.begin(), vector.end(), 0&&1&&D)
使用std ::發現在搜索多個元素()
由於
不能使用std::find
。假設0&&1&&D
,就是要三個值的列表,你想找到任何這些值的向量元素,你可以使用:
std::find_if
與謂詞(拉姆達可能是最簡單的例如[](const T& x) { return x == 0 || x == 1 || x == d; }
,其中T
是您vector
持有任何類型),或
std::find_first_of
(鏈接的頁面有一個很好的例子)。
這可能是一個單獨的問題,但是如果某些元素存在,是否有一種方法可以用於在向量中搜索?或者我必須遞歸地做呢? – Noobgineer
可能要檢查_Tony D_的回答爲:) – Nacho
std::for_each
可能適合你。
std::for_each(vector.begin(),
vector.end(),
[](auto item) -> void {if (item == <xxx>) { /* Use the item */ });
您在留言中提到:
這可能是一個單獨的問題,但我可以使用,如果某些元素存在於載體進行搜索的方法?
std::any_of
是該功能。
bool found = std::any_of(vector.begin(),
vector.begin(),
[](auto item) -> bool { return item == <xxx>; });
你能解釋第三個參數嗎? '[](auto item) - > bool {return item ==
這是一個lambda函數。有關更多詳細信息,請參見http://en.cppreference.com/w/cpp/language/lambda。 –
不完全是,但接近。我試圖做的是找到我的向量是否包含所有那些元素,即vector [0] == 1,vector [1] == 0,vector [2] = = D'。不一定要在這些確切的位置,但假設一個大小爲i的向量。同樣,他們不必相鄰。 – Noobgineer
那你還不如把1,0,d值到第二載體,並且有超過它在每個反過來這些值的第一向量調用'find'一個'for'循環。如果第二個向量比第一個向量小得多,那麼它可能不太適合緩存,但是我沒有理由認爲在程序的性能關鍵部分有足夠的數據來實現這個實際問題。如果你決心要避免這種情況,你可以使用'find_first_of',每找到一個匹配的時間從集合你正在尋找的值刪除匹配的元素,直到它是空的(成功)或者你打'end'。 –