我们可以使用std :: auto_ptr<>用标准容器?是的,但使用移动语义

时间:2018-05-17 04:58:17

标签: c++

我的假设是std::auto_ptr不能用于标准容器(Why is it wrong to use std::auto_ptr<> with standard containers? ), 在C ++ 11之前支持编译器错误,因为只有复制语义,但我认为如果我们使用移动语义而没有任何问题,我们可以在容器中使用auto_ptrstd::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 <<" ";
}

0 个答案:

没有答案