我正在尝试将2D向量中所有元素的值设置为特定值。据我所知,人们不能像对待数组那样使用memset来处理向量。因此,我必须使用std::fill来设置2D向量中所有元素的值。然而,我知道如何在1D向量中使用fill,如下所示。
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);
注意,我可以轻松地设计一个嵌套的for循环来手动设置2D向量的元素值。 但是,在我的程序中,这并不可行,因为2D向量的大小相当大,并且有其他耗时的函数(递归函数)正在同时进行。
twoDVector
时,已经填充了每个元素(以及每个元素的每个元素)的相同值。 - Calethdata()
方法返回原始数组,然后可以使用memset
。自C++11起可用。但是对于向量的大小和容量之间的差异需要小心。 - Marco Luzzara