我想使用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