我有
typedef std::vector<int> IVec;
typedef std::vector<IVec> IMat;
我想知道如何使用std算法来填充IMat
,也就是如何用更少的代码完成以下操作(所有的IVec
都具有相同的大小)?
void fill(IMat& mat){
for (int i=0;i<mat.size();i++){
for (int j=0;j<mat[i].size();j++){
mat[i][j] = i*j;
}
}
}
PS:已经有一种方法可以用常量填充矩阵,最好使用C++11之前的算法。
i*j
)来填充它们,还是任何值(例如0
)都可以? - SingerOfTheFallstd::transform
而不是显式循环或for_each
来完成它。http://coliru.stacked-crooked.com/a/96f803182ad4abad从技术上讲,您可以将所有内容放在一行上以使其“代码更少”,但为什么要这样做呢? OP中的简单循环更加清晰。 - AndyGoperator()
的类对象所替代。 - deviantfan