有没有一种方法可以像使用 lambda 函数一样初始化某个容器的所有值std::for_each
?我需要一个 3 维std::vector
的 random s,如果我可以在构造函数中执行此操作而无需执行另一个循环int
,那就太好了。std::for_each
我尝试了以下失败:
#include <iostream> /* std::cout */
#include <vector> /* std::vector */
#include <algorithm> /* std::for_each */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
int main(){
srand(time(nullptr));
/* only initializes first element, count[0][0][0] */
std::vector<std::vector<std::vector<int>>> count{100,
std::vector<std::vector<int>>{100,
std::vector<int>{100,
[](){
return = rand() % 100;
}()
}
}
};
int temp = 0;
/* here is how I access all elements using std::for_each and lambdas */
std::for_each(std::begin(count), std::end(count),
[&temp](std::vector<std::vector<int>> i){
std::for_each(std::begin(i), std::end(i), [&temp](std::vector<int> j){
std::for_each(std::begin(j), std::end(j), [&temp](int k) {
if(k > temp){
temp = k;
}
});
});
});
}
非常感谢任何帮助或想法!