如何在range for循环中使用begin()和end()
How to use begin() and end() in a ranged for loop
为什么这段代码不起作用?
我得到的错误是
T *Vector<T>::begin(Vector<T> &)' : expects 1 arguments - 0 provided
代码:
#include <iostream>
using namespace std;
template<typename T> class Vector
{
public:
T* elem;
int sz;
Vector()
{
elem = new T[2];
sz = 2;
}
template<typename T> T* begin(Vector<T>& x)
{
return &x[0];
}
template<typename T> T* end(Vector<T>& x)
{
return x.begin()+x.size();
}
unsigned int size()
{
return sz;
}
};
int main()
{
Vector<int> ea;
for(auto& s: ea)
// do something
return 0;
}
我也不确定begin()和end()的向量参数,为什么他们需要它?它们已经是成员函数,因此应该将"this"作为参数。我写了这段代码,但函数取自一本书(它们是朋友吗?)
您需要Vector::begin()
和Vector::end()
(无参数)。返回的值应该作为迭代器工作。
这可能是一个类似的基于测距的环路的可能实现:
auto && __range = range_expression;
for (auto __begin = begin_expr, __end = end_expr; __begin != __end; ++__begin)
{
range_declaration = *__begin;
// loop_statement
}
因此:
如果__range的类型是具有begin或结束成员函数,则begin_expr为__range.begin()和end_expr是__range.end()1
所以,它应该是:
T* begin()
{
return elem;
}
T* end()
{
return elem + sz;
}
应该是:
template<typename T> T* begin()
{
return &elem[0];
}
template<typename T> T* end()
{
return begin() + size;
}
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- 了解向量中的 .begin 和 .end
- C++ const char with .begin() and .end()
- 为什么 std::find( s.begin(), s.end(), val ) 比集合 s 的 s.find(val) 慢 1000 倍<int>?
- 如何使用vector.begin()和vector.end()遍历矩阵?
- 如何实现 cbegin() 和 cend() 从 begin() 和 end() ?
- C++ - 空的 std::list begin() 和 end() 不相等
- 为什么std::begin()和std::end()适用于固定数组,而不适用于动态数组
- C++代码"x.erase(std::remove(x.begin(), x.end(), ), x.end())"是如何工作的?
- begin(),end()和cbegin(),cend()之间的区别是什么?
- 在模板化数据结构上调用 begin() 或 end()
- 重载 std::begin() 和 std::end() 用于非数组
- 使用 std::set 的 .begin() 和 .end() 函数会产生意想不到的结果
- 使用范围V3视图来实现begin()/end()方法
- 为 C++ 选择 begin() 和 end()
- 为什么"begin/end"与"first/last"的差异?
- Empty std::vector begin != end
- 匹配可迭代类型(具有begin()/end()的数组和类)