簡體   English   中英

為什么std :: find for vector返回迭代器而不是整數位置

[英]Why does the std::find for vector return a iterator instead of the integer position

為什么向量find返回迭代器而不是整數值?

vector<string>::iterator itr1 = std::find(words.begin(), words.end(), word);

std::find適用於各種容器,而不僅僅是std::vector 例如,它適用於std::list但該容器不允許按索引訪問元素(至少不容易)。 為了使它能夠處理各種容器,它需要返回所有容器都能理解的東西,一個迭代器。

編輯:如果要查找與給定迭代器等效的索引位置,可以使用std::distance 例如 :

std::distance(std::begin(words), itr1);

這適用於標准容器,但對某些容器來說可能較慢。 如果找不到元素,它將返回容器的大小,因為如果找不到元素,則find返回end ,並且beginend之間的距離是容器的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM