1
5
原因是 vector::resize 通过调用自动提供的复制构造函数(而不是在示例中定义的构造函数)插入副本。
但是由于vector::resize的工作方式(它有第二个可选参数用作它创建的副本的“原型”,在您的示例中有一个默认值)
: 这个解决方案有几个缺点值得注意,还有一些选项和变体可能会产生更易于维护和更合理的代码。
如果您知道所有这些问题,并且相信您能够处理这些后果(这当然高度依赖于您的特定上下文),那么重写复制构造函数是一个可行的选择。毕竟,语言的特点是有原因的。显然,这并不像看上去那么简单,你应该小心。 |
2
21
复制
每个新插入的向量元素。如果省略第二个参数,它将默认构造一个类型为的对象
在你的代码里,一个临时的
[感兴趣的注意事项:在C++ 03中,第二个参数
您可以(也可能应该)将元素单独插入到向量中,例如。,
|
3
3
|
4
0
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |