C ++迭代器问题

时间:2011-03-18 01:33:53

标签: c++ oop stl iterator containers

我看到一个面试问题,要求用“iterator”来阅读vector<vector<int>>。我们必须设计必要的界面吗?

这个问题想问一下这个问题真的让人困惑吗?或者如何回答这类问题。

我可以想象它打算测试C ++ STL实现和面向对象的设计。

3 个答案:

答案 0 :(得分:1)

Matrix位于3 * 4维度。如果需要只通过迭代器访问,这应该给你一个想法 -

vector< vector<int> > Matrix(3, vector<int>(3,4));

for( vector<vector<int>>::iterator i = Matrix.begin(); i != Matrix.end(); ++i )
{
    for( vector<int>::iterator j = (*i).begin(); j != (*i).end(); ++j )
    {
        cout << *j << "\t" ;
    }
    cout << "\n" ;
}

答案 1 :(得分:0)

您可能会发现此网站很有用:http://en.wikipedia.org/wiki/Iterator#C.2B.2B

答案 2 :(得分:0)

只是为了好玩,我的回答是“请使用迭代器来打印vector<vector<int> >的值”。 :

#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>

using std::ostream;
using std::vector;
using std::cout;

template <class T>
ostream& operator<<(ostream&os, const vector<T>& v)
{
    os<<"(";
    // Can't use std::copy(ostream_iterator) easily due to ADL
    for(typename vector<T>::const_iterator it = v.begin();
        it != v.end();
        it++) {
        os<<(*it)<<", ";
    }
    return os<<")";
}

int main()
{
    vector<vector<int> > vv(3, vector<int>(4));
    cout << vv << "\n";
}