m**o 发帖数: 5261 | 1 I am not very familiar with c++. I want to print out an integer matrix line
by line. Why the cout<
void Matrix::printMatrix(){
for(unsigned int i=0; i
{
Matrix::printRow(i);
}
}
void Matrix::printRow(unsigned int rownumber)
{
matrix_row_t row=grid.at(rownumber);
for(unsigned int i=0; i < row.size(); i++)
{
cout<
}
cout<
} |
|
z****e 发帖数: 2024 | 2 一个矩阵类,用vector< vector >.结构
问题是能否把下面那个while改成for_each?
#include
#include
#include
#include
using namespace std;
class Matrix{
friend ostream& operator<<(ostream & os, const Matrix & Mat){
vector< vector >::const_iterator iter=Mat._m.begin();
while(iter!=Mat._m.end())//此处能否不用循环?
Mat.printrow( *(iter++), os);//比如改成for_each?
return os;
}
public:
Matrix(){}
Matrix(int row, int column):
_m( vector< vector > (row, vecto |
|
z****e 发帖数: 2024 | 3 试了ptr_fun(Mat.printrow),还是不行。
郁闷死了。 |
|
t****t 发帖数: 6806 | 4 经过N次试验, 可以这样写. 一开始没注意到bind后面的类型必须是CopyConstructible
, 想着怎么os不能copy. 后面发现os和Mat都是reference, 必须用reference_wrapper
包装一下, 前两天你才问过的.
for_each(Mat._m.begin(), Mat._m.end(), bind(mem_fn(&Matrix::printrow), ref(
Mat), _1, ref(os)));
(请自行添加头文件) |
|