【发布时间】:2018-07-04 05:05:55
【问题描述】:
我正在尝试将 2D 矢量中所有元素的值设置为特定值。据我所知,不能将 memset 用于向量,就像它们用于数组一样。因此,我必须使用 std::fill 将 2D 向量中的所有元素设置为特定值。但是,我知道如何对一维向量使用填充,如下所示。
vector<int> linearVector (1000,0);
fill(linearVector.begin(),linearVector.end(),10);
但是,当我尝试对 2D 矢量(如下所示)执行类似操作时,它不起作用。
vector<vector<int> > twoDVector (100,vector <int> (100,0));
fill(twoDVector.begin(),twoDVector.end(),10);
PS:我知道我可以很容易地设计一个嵌套的 for 循环来手动将 2D 向量的元素设置为我想要的值。但是,在我的程序中这是不可行的,因为 2D 向量的大小非常大,并且还有其他耗时的函数(递归函数)并行发生。
【问题讨论】:
-
提示:它不是二维向量。它是向量的向量。
-
提示:当你初始化
twoDVector的每个元素(以及每个元素的每个元素)时,你已经用相同的值填充了它 -
不能将 memset 用于向量,就像它们如何用于数组一样:实际上你可以,
data()方法返回原始数组,然后你可以使用 @987654325 @。仅从 C++ 11 开始。