【发布时间】:2016-08-31 16:15:00
【问题描述】:
案例一:
std::vector< Ticker > snap_tickers_ (n_instruments);
和 案例2:
std::vector< Ticker >snap_tickers_;
snap_tickers_.resize(n_instruments);
我在尝试案例 2 时遇到编译错误,而在案例 1 中没有任何构建失败。这是否与为其创建向量的对象类型有关?
回答: 在案例 2 中调整大小使用复制构造函数,该构造函数已为 Ticker 类删除,因此失败。
【问题讨论】:
-
reference material 会回答这个问题
-
内森,我查看了引用的材料,找不到答案..
-
@Appy 这些语句之间没有太大区别。第一个定义构造函数中的初始大小,而第二个通过单独调用
resize()来实现。实际上很难相信您无法从链接的参考文档中弄清楚这一点。 -
@πάνταῥε ῖ我试图指出我在这两种情况下找不到任何区别。我认为它们是相同的,问题是我在尝试案例 2 时遇到编译错误,而在案例 1 中没有任何构建失败。这是否与为其创建向量的对象类型有关?
-
@Appy 确定它的最佳方法是将
Ticker替换为一些琐碎的东西,例如int,然后查看它是否仍然可以编译(忽略以后对向量的其他预期Ticker的使用)。此外,这将有助于在问题中包含您的错误