Нужно сделать приблизительно такое: for(Matrix::iterator row = matrix.begin(); row != matrix.end(); row++) for(Matrix::Row::iterator col = row->begin(); col != row->end(); col++) myStream << *col; Развесисто и непереиспользуемо (нужно всегда копировать эти строки, если хочется сделать что-нибудь другое с элементами матрицы. Сильно подозреваю, что где-то рядом кроется изящный приём типа boost::bind, позволивший бы сделать это одним махом, без итераторов и циклов. Например, такое приходит в голову: std::for_each( matrix.begin(), matrix.end(), boost::bind( &std::for_each, _1.begin(), _2.end, some_operator ) ); Ясно, что работать оно не будет, ибо в boost::arg<> нет никаких begin() и end(). Или такое: std::for_each( matrix.begin(), matrix.end(), boost::bind( &std::for_each, boost::bind(&Matrix::Row::begin, _1), boost::bind(&Matrix::Row::end, _2), some_operator ) ); Тоже не годится, потому что два промежуточных параметра внешнего bind должны быть определены объектом типа boost::arg<>. Вот что бы такое придумать, чтобы было столь же красиво и работало? :)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум размер STL вектора (2003)
- Форум [stl][c++]Двумерный массив (2010)
- Форум Использование boost (2005)
- Форум stl контейнеры и boost smart pointers (2014)
- Форум двумерный массив (2013)
- Форум Как расковырять вектор векторов? (2011)
- Форум stl (2003)
- Форум STL (2004)
- Форум Ищу. Удалённая. C++/stl/boost/posix sockets/multithreading (2010)
- Форум Ищу. Удалённая. C++/stl/boost/posix sockets/multithreading (2010)