How to initialize a vector of distinct dynamically allocated addresses
是否可以在初始化期间创建
简单地做
1 2 | int N = 10; std::vector<T*> vec(N, new T) |
使vec的所有元素在堆上存储相同的地址。 我当然可以
1 2 3 4 5 | int N = 10; std::vector<T*> vec(N); std::for_each(vec.begin(), vec.end(), [](auto &ptr){ ptr = new int; }); |
有没有办法从构造函数调用中做到这一点?
将值填充到向量中的构造函数都创建单个值的重复项,因此在这种情况下它们将无法工作。
但是,您可以比
1 2 | std::vector<T *> vec(N); std::generate(vec.begin(), vec.end(), [] { return new int; }); |
也就是说,原始指针向量很可能是一个错误,所以我建议您探索其他选择。