试图查找有关在std :: find期间使用空向量但没有太多运气查找任何信息的情况会发生什么情况的信息。
我的问题是,如果将空向量传递给std :: find,返回值是否始终为nullptr还是未定义的行为?
std::vector<int> someDataContainer;
auto it = std::find(someDataContainer.begin(), someDataContainer.end(), 1);
答案 0 :(得分:7)
不存在该元素时,find
的返回值是end
迭代器:
[alg.find](重点是我):
让E为:
*i == value
代表find
,- [...]
返回:范围为{{1}的
i
中的第一个迭代器[first, last)
,其中 E 为true
。 如果找不到这样的迭代器,则返回last
。
这包括该元素不存在,因为范围为空。
答案 1 :(得分:5)
一个空向量将有begin() == end()
,因此std::find
将立即返回并返回end()
。这里没有未定义的行为。
答案 2 :(得分:4)
答案 3 :(得分:2)