对迭代器使用 auto
Using auto for iterators
我有以下代码:
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
的类型是什么?
>it
具有从返回类型std::cbegin(std::vector<ty>)
推导出的类型std::vector<ty>::const_iterator
。
begin
和cbegin
将为常量向量生成与输入相同的迭代器。
另一方面,我认为您应该使用基于范围的 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;
}
PS:我还建议您通过常量引用传递element
以避免复制:const tv & element
。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 如何在c++迭代器类型中包装std::chrono
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 对于set上的循环-获取next元素迭代器
- 为什么output_editor Concept不需要output_e迭代器标记
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 使用迭代器时如何访问对象在向量中的位置?
- std::vector::迭代器是否可以合法地作为指针
- 跟随整数索引列表的自定义类迭代器
- 不明白迭代器,引用和指针失效,一个例子
- 我可以使用反向迭代器作为ForwardIt吗
- 将 const auto & 转换为迭代器
- 使用auto-ref或迭代器进行迭代
- 从模板中的迭代器推断变量的类型,out使用auto
- 具有代理迭代器/引用和auto的容器
- 对迭代器使用 auto
- 将迭代器的左侧从auto替换为pair