是否可以在初始化期间创建contact.number
,以使std::vector<T*> vec;
的每个元素在堆上存储一个不同的地址?
简单地做
vec
使vec的所有元素在堆上存储相同的地址。当然,我可以只做
int N = 10;
std::vector<T*> vec(N, new T)
在构造函数调用中有任何方法可以做到吗?
答案 0 :(得分:1)
将值填充到向量中的构造函数都会创建单个值的重复项,因此在这种情况下它们将无法工作。
您可以比std::for_each
做得更好。由于您希望向量中的每个元素都填充有函数的结果,因此std::generate
(或std::generate_n
)显然更适合:
std::vector<T *> vec(N);
std::generate(vec.begin(), vec.end(), [] { return new int; });
也就是说,原始指针向量很可能是一个错误,所以我建议您探索其他选择。