我的假设是std::auto_ptr
不能用于标准容器(Why is it wrong to use std::auto_ptr<> with standard containers?
),
在C ++ 11之前支持编译器错误,因为只有复制语义,但我认为如果我们使用移动语义而没有任何问题,我们可以在容器中使用auto_ptr
和std::unique_ptr
相同。
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
int main()
{
auto_ptr<int> a1(new int(1));
auto_ptr<int> a2(new int(2));
auto_ptr<int> a3(new int(3));
auto_ptr<int> a4(new int(4));
vector<auto_ptr<int>> v1;
v1.push_back(std::move(a1));
v1.push_back(std::move(a2));
v1.push_back(std::move(a3));
v1.push_back(std::move(a4));
for(auto it: v1)
cout <<*it <<" ";
}