C++ std::vector.resize()中的第二个参数是什么意思?

C++ std::vector.resize()中的第二个参数是什么意思?,c++,std,stdvector,C++,Std,Stdvector,我在理解const value_type&val在此函数中的含义时遇到一些问题: void std::vector::resize (size_type n, const value_type& val); 我读了这本书,上面写着: 对象,如果n大于当前容器大小,则将其内容复制到添加的元素。 如果未指定,则使用默认构造函数。 成员类型value_type是容器中元素的类型,在vector中定义为第一个模板参数T的别名 但它到底有什么作用呢?例如,我有一行代码: myVector.res

我在理解const value_type&val在此函数中的含义时遇到一些问题:

void std::vector::resize (size_type n, const value_type& val);
我读了这本书,上面写着:

对象,如果n大于当前容器大小,则将其内容复制到添加的元素。 如果未指定,则使用默认构造函数。 成员类型value_type是容器中元素的类型,在vector中定义为第一个模板参数T的别名

但它到底有什么作用呢?例如,我有一行代码:

myVector.resize(10, numeric_limits<double>::infinity());
如果10大于其当前大小,则无穷大的内容将复制到myVector

如果有人能解释一下,那就太好了


谢谢大家!

它将向量中的所有值设置为该值,因此如果myVector一开始为空,它将包含10个双精度值,值为无穷大。如果向量中已有值1.3、2.9、3.6、-1.9和5.2,则接下来的五个元素将是无穷大


显然,如果你有一个值,或者向量已经大于10个元素,那么这个值是什么,都没有区别

它将向量中的所有值设置为该值,因此如果myVector一开始为空,它将包含10个双精度值,值为无穷大。如果向量中已有值1.3、2.9、3.6、-1.9和5.2,则接下来的五个元素将是无穷大


显然,如果你有一个值,或者向量已经大于10个元素,那么这个值是什么,都没有区别

尽管有一些精心设计的语言,它还是相当简单。如果resize创建了新元素,那么当然它们必须用一些东西初始化。通常,对于向量,它们将通过调用T的默认构造函数进行初始化。如果提供第二个参数,则会将新元素初始化为该值的副本


实际上,在您的示例中,调用确保向量有10个项,如果它的项少于10个,则所有新项都会收到无穷大的副本。因此,如果你的向量有6个元素,它将得到4个新的无穷大副本。

尽管有一些复杂的语言,但它非常简单。如果resize创建了新元素,那么当然它们必须用一些东西初始化。通常,对于向量,它们将通过调用T的默认构造函数进行初始化。如果提供第二个参数,则会将新元素初始化为该值的副本


实际上,在您的示例中,调用确保向量有10个项,如果它的项少于10个,则所有新项都会收到无穷大的副本。因此,如果你的向量有6个元素,它将得到4个无穷大的新副本。

是。调整大小功能可用于增加或减少向量的大小。但是,如果您使用它来增加大小,如果新大小大于当前大小,则必须在这些新单元格中添加一些内容。如果不指定第二个参数,则该值是向量所持有的任何数据类型的默认构造函数;但是,可以使用第二个参数指定默认值。常用的用法是指定值0、NULL等。

是。调整大小功能可用于增加或减少向量的大小。但是,如果您使用它来增加大小,如果新大小大于当前大小,则必须在这些新单元格中添加一些内容。如果不指定第二个参数,则该值是向量所持有的任何数据类型的默认构造函数;但是,可以使用第二个参数指定默认值。常用的用法是指定0、NULL等值。

老实说,我看不出这个描述有多么不清楚。是的,你作为第二个参数传递的对象用来填充最后10个MyVCeCurth.CaseCase. C++引用状态,如果N大于当前容器大小,则通过插入需要的元素来扩展内容,以达到N的大小。如果指定了val,则新元素将初始化为val的副本,否则,它们将被值初始化。。是的,val用于初始化添加到向量中的任何新元素。分享和享受。老实说,我不认为这种描述是多么的模糊。是的,你作为第二个参数传递的对象用来填充最后10个MyVCeCurth.CaseCase. C++引用状态,如果N大于当前容器大小,则通过插入需要的元素来扩展内容,以达到N的大小。如果指定了val,则新元素将初始化为val的副本,否则,它们将被值初始化。。是的,val用于初始化添加到向量中的任何新元素。分享和享受。