Вопрос итератора C ++ - PullRequest
0 голосов
/ 18 марта 2011

Я видел вопрос об интервью, который попросили использовать «итератор» для чтения vector<vector<int>>.Нам нужно спроектировать необходимый интерфейс?

Не совсем понятно, хочет ли задать этот вопрос вопрос?Или как ответить на этот вопрос.

Я могу представить, что он намерен протестировать реализацию C ++ STL и объектно-ориентированный дизайн.

Ответы [ 3 ]

1 голос
/ 18 марта 2011

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" ;
}
0 голосов
/ 19 марта 2011

Просто для забавы, вот что мой ответ был бы: «Пожалуйста, используйте итератор для печати значений 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";
}
0 голосов
/ 18 марта 2011

Вы можете найти этот сайт полезным: http://en.wikipedia.org/wiki/Iterator#C.2B.2B

...