我有以下代码:
template<typename ty>
bool vector_has(const std::vector<ty> &in_vector, const ty element) {
for(auto it = std::cbegin(in_vector); it != std::cend(in_vector); it++)
if(*it == element) return true;
return false;
}
我已提供it
类型的auto
。 Visual Studio似乎不知道那是什么(在运行之前)...... it
的类型是什么?
答案 0 :(得分:3)
it
的类型std::vector<ty>::const_iterator
是从std::cbegin(std::vector<ty>)
的返回类型中推断出来的。
答案 1 :(得分:-1)
begin
和cbegin
将为const向量生成与输入相同类型的迭代器。
另一方面,我认为你应该使用基于范围的for循环, 因为它不那么冗长:
template<typename ty>
bool vector_has(const std::vector<ty> &in_vector, const ty element) {
for(auto const & val : in_vector)
if(val == element) return true;
return false;
}
P.S。:我还建议您通过const引用传递element
以避免副本:const tv & element
。