C++ 我如何将其切换到unique_ptr?

C++ 我如何将其切换到unique_ptr?,c++,c++11,unique-ptr,C++,C++11,Unique Ptr,如何使其不必手动删除指针 在向量中使用唯一的\u ptr 这是我的密码: class-vec2{ 公众: 双x; 双y; vec2(){ x=0.0; y=0.0; } vec2(双xx,双yy){ x=xx; y=yy; cout简单: std::vector<std::unique_ptr<vec2>> vecs; vecs.reserve(2); // Optional vecs.push_back(std::make_unique<vec2>(1.

如何使其不必手动删除指针

向量中使用
唯一的\u ptr

这是我的密码:

class-vec2{
公众:
双x;
双y;
vec2(){
x=0.0;
y=0.0;
}
vec2(双xx,双yy){
x=xx;
y=yy;
cout简单:

std::vector<std::unique_ptr<vec2>> vecs;
vecs.reserve(2);   // Optional
vecs.push_back(std::make_unique<vec2>(1.8 ,1.7));
vecs.push_back(std::make_unique<vec2>(1.99, 1.7));
for (auto& v : vecs) {
    cout << v->toString() << endl;
}
std::向量向量向量机;
vecs.reserve(2);//可选
vecs.push_back(标准::使_唯一(1.8,1.7));
vecs.push_back(标准::使_唯一(1.99,1.7));
用于(自动&v:vecs){
cout toString()简单:

std::vector<std::unique_ptr<vec2>> vecs;
vecs.reserve(2);   // Optional
vecs.push_back(std::make_unique<vec2>(1.8 ,1.7));
vecs.push_back(std::make_unique<vec2>(1.99, 1.7));
for (auto& v : vecs) {
    cout << v->toString() << endl;
}
std::向量向量向量机;
vecs.reserve(2);//可选
vecs.push_back(标准::使_唯一(1.8,1.7));
vecs.push_back(标准::使_唯一(1.99,1.7));
用于(自动&v:vecs){


couttostring()不使用指针并使其成为
std::vector
?如果我使用普通的vec2,则速度较慢,构造函数和析构函数被调用的次数较多,效率较低。@Thomas,可能存在
virtual
方法是有原因的。也有一个vec3类,但我没有包含它。vec3继承自vec2,您实际上会更快如果使用向量而不是指针,那么指针速度会变慢,因为你会为向量中的每一项分配一个新的指针。这对内存布局非常不利,指针会到处都是,导致缓存未命中。像向量一样的直线布局会更快,更容易维护。不使用指针并使其成为
std::vector
?如果我使用普通的vec2,则速度较慢,构造函数和析构函数的调用次数较多,效率较低。@Thomas,可能存在
virtual
方法是有原因的。也有一个vec3类,但我没有包含它。vec3继承自vec2,您实际上会更快使用向量而不是指针。让指针变慢的是,你为向量中的每一项分配了一个新的指针。这对内存布局非常不利,你的指针最终会到处都是,导致缓存未命中。像你用向量得到的直行线性布局会更快,更容易维护。i如果使用了
std::make_unique
,那么
emplace_back
push_back
是等效的(例如,在Microsoft STL中,
push_back
的重载取
T&
只需调用
emplace_back
),
emplace_back
可以与
new
一起使用:
emplace_back(new vec2(1,2))
,但是
make_unique
更好,复制构造函数名为@user366866,否。使用
emplace_back
并保留如何?1.
reserve
-可能是。2.如果使用
std::make_unique
,则
emplace_back
push_back
是等效的(例如,在Microsoft STL中,
push_back
的重载只需调用
emplace_back
),
emplace_back
可以与
new
一起使用:
emplace_back(new vec2(1,2))
,但
使_独一无二
更好,