如何在自定义类中启用'auto loops'?
How to enable 'auto loops' in custom classes?
我已经编写了一个类vecMatrix
,它封装在std::vector
周围以提供二维存储功能。然而,尽管能够将std::vector
对象中的数据作为写入循环非常方便
std::vector<float> vec;
for (auto& val: vec) { /* do stuff to val*/}
我不能用我的自定义类来做这件事。需要什么样的操作员过载才能以相同的方式对vecMatrix
进行编码?:
vecMatrix<float> mat;
for (auto& val: mat) { /* do stuff to val*/}
您需要定义成员函数begin
和end
,它们将迭代器返回到类所代表的范围(或者您可以定义将引用类作为参数的非成员。
相关文章:
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 如何在自定义类中启用'auto loops'?
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 为什么当我为 for(auto& it : myUnorderedMap) {... = std::move(it.second)} 时,我会得到一个 const 引用?
- 为什么结构化绑定不使用"auto&"返回对结构成员的引用,而是返回成员本身
- 擦除许多矢量元素,同时使用'auto'
- 考虑到其他好处,关键字'auto'真的有助于简化调试C++吗?
- 为什么"weak.lock()"返回"nullptr" "auto weak=std::make_shared<int>(42);"的定义?
- 推理类型如何工作"auto"和按引用调用?
- 'auto *x = new some_struct{};"是一个未初始化的变量?
- 为什么 std::gcd/lcm 返回 std::common_type_t<M, N> 而不是 auto?
- 将函数参数类型声明为 auto
- 使用constexpr + auto作为返回和参数类型的奇怪类型推导
- 为什么 const auto &p{nullptr} 在 C++17 中不起作用,而 auto *p{nullptr} 不起作用?
- C++/11 auto 关键字是在更有效时推导参数进行按引用传递,还是始终按值传递?
- 使用"auto"推断嵌套初始值设定项列表的类型
- const auto & 和 auto & if reference 对象之间的区别是 const
- C++:带有 "auto" 的二维数组上的嵌套 For 循环
- 在扣除自动之前使用decltype(auto) <func>
- "auto"推断出 hashtable_policy.h 中的错误类型