我想使用C++ 11“for循环”迭代矢量的元素,但我收到一些错误(begin()和end()函数,我认为是一个问题)。谢谢!STL vector:迭代元素
#include <iostream>
#include <vector>
#include<iterator>
using namespace std;
template<typename TElement>
class MyClass {
private:
vector<TElement> vec;
public:
MyClass& operator+(TElement n) {
vec.push_back(n);
return *this;
}
int getS() {
return vec.size();
}
iterator begin() {//here is some problems
return vec.begin();
}
iterator end() {
return vec.end();
}
};
int main() {
MyClass<int> mm;
mm = mm + 10;
mm = mm + 9;
double avg = 0.0;
for (auto g : mm) { //begin() and end() functions error
avg += mm;
}
cout<< avg/mm.getS();
return 0;
}
错误:
C2675一元 '++': '的std ::游标' 不定义这种操作或转换到类型接受的预先规定的操作,
非法间接,
C2678二进制“!=”:没有操作员发现这需要类型'的std ::迭代器的左侧操作数,
C2955'的std ::迭代器:使用类模板的热曲IRES模板参数列表,
C2514'的std ::迭代器:类没有构造
[它不那么简单](https://stackoverflow.com/questions/8054273/how-to-implement-an-stl-style-iterator-and-avoid-common-pitfalls)。 –
[C++ 11 foreach语法和自定义迭代器]的可能重复(http://stackoverflow.com/questions/7562356/c11-foreach-syntax-and-custom-iterator) –
您应该始终包含实际的,完整的,错误消息。 – renemilk