我試圖編譯一個反向迭代器,但我嘗試這樣做給一個可怕的爛攤子。代碼的小例子,是...反向迭代器將無法編譯
#include <iostream>
#include <vector>
#include <algorithm>
class frag {
public:
void print (void) const;
private:
std::vector<int> a;
};
void frag::print (void) const
{
for (std::vector<int>::reverse_iterator iter = a.begin();
iter != a.end();
++iter) {
std::cout << *iter << std::endl;
}
}
,並試圖編譯它產生以下...
In file included from /usr/include/c++/4.4/bits/stl_algobase.h:69,
from /usr/include/c++/4.4/bits/char_traits.h:41,
from /usr/include/c++/4.4/ios:41,
from /usr/include/c++/4.4/ostream:40,
from /usr/include/c++/4.4/iostream:40,
from frag.cpp:1:
/usr/include/c++/4.4/bits/stl_iterator.h: In constructor ‘std::reverse_iterator<_Iterator>::reverse_iterator(const std::reverse_iterator<_Iter>&) [with _Iter = __gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >, _Iterator = __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >]’:
frag.cpp:14: instantiated from here
/usr/include/c++/4.4/bits/stl_iterator.h:134: error: no matching function for call to ‘__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >::__normal_iterator(__gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >)’
/usr/include/c++/4.4/bits/stl_iterator.h:686: note: candidates are: __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = int*, _Container = std::vector<int, std::allocator<int> >]
/usr/include/c++/4.4/bits/stl_iterator.h:683: note: __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator() [with _Iterator = int*, _Container = std::vector<int, std::allocator<int> >]
/usr/include/c++/4.4/bits/stl_iterator.h:669: note: __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >::__normal_iterator(const __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >&)
昨天有關於這個問題的一個問題,但我不認爲這與它不是模板相同。如果一個向量在本地以類似的方式聲明,那麼它非常高興。 (Ubuntu 10.4上的g ++)。
任何人都知道我應該怎麼辦呢?
dang,幾分鐘後更快:( – rubenvb 2010-07-01 14:57:10
@rubenvb:儘管我的第一次嘗試只發現了一個問題,但瘋狂地編輯以更新第二個問題 – 2010-07-01 14:58:45
:D有些問題似乎吸引了衆人,不是嗎? – rubenvb 2010-07-01 15:05:02