C++ 如何使用自定义值初始化向量的向量? vectorg; g、 调整大小(n+1);

C++ 如何使用自定义值初始化向量的向量? vectorg; g、 调整大小(n+1);,c++,arrays,vector,C++,Arrays,Vector,我想用-1初始化n+1值。我知道如何对单个向量执行此操作,但在这个向量中如何执行。您可以嵌套初始化: std::vector g(n,std::vector(m,-1)); 这将g声明为包含n元素的向量,其中每个元素都是包含m元素的向量,这些子向量中的每个元素都是-1。构造函数和resize()std::vector的方法允许您指定在扩展向量的大小时创建的新元素所应用的值,例如: 向量g; g、 调整大小(n+1,std::vector(n+1,-1)); 或: 向量g(n+1,std::v

我想用-1初始化n+1值。我知道如何对单个向量执行此操作,但在这个向量中如何执行。

您可以嵌套初始化:

std::vector g(n,std::vector(m,-1));

这将
g
声明为包含
n
元素的向量,其中每个元素都是包含
m
元素的向量,这些子向量中的每个元素都是-1。

构造函数和
resize()
std::vector
的方法允许您指定在扩展
向量的大小时创建的新元素所应用的值,例如:

向量g;
g、 调整大小(n+1,std::vector(n+1,-1));
或:

向量g(n+1,std::vector(n+1,-1));
请注意,在任何一种情况下,您都要创建一个包含
n+1
元素的临时
vector
,然后在外部
vector
中复制该临时元素的
n+1
。为了避免这些副本,您可以执行以下操作:

std::向量g(n+1);
对于(大小i=0;i
或:

std::向量g(n+1);
用于(自动和v:g){
v、 调整大小(m,-1);
}

也就是说,如果可以的话,尽量不要使用嵌套的
vector
s。在内存使用和CPU操作方面,更有效的方法是分配一个一维
向量,然后只使用二维索引,例如:

const int size=n+1;
标准::向量g(大小*大小,-1);
...
int x=。。。;
int y=。。。;
g[(x*尺寸)+y]=。。。;
... = g[(x*尺寸)+y];

不太确定该版本,但它是最新版本。是的,我希望二维中的所有值都是-1。不要像这样嵌套向量!这是对CPU缓存的毒药,会导致所需的分配数量激增。用一个漂亮的
向量来代替。。。你可以在上面覆盖2D索引你说你想要一个2D向量,但是你希望内部的
向量有多大?外部向量将是
n+1
向量数,内部向量将是X个整数,您希望X是什么?通常,如果2D表格是矩形的,那么最好实现一个长度为
width*height
的单个
std::vector
,而不是2D向量,我将使用大小
m*n
的向量,并使用
I+j*n
@Rarblack进行索引。您可以使用
g[x+y*width]
x,y
处索引单元格。谢谢。我会接受的!基本上,我记得有人用resize做过,但我想不起来了。我会用那个。谢谢
vector < vector <int> > g;
g.resize(n + 1);