c++ std::vector的双元素反向数组

  • 本文关键字:元素 数组 std vector c++ c++
  • 更新时间 :
  • 英文 :


我想问我如何才能快速,不复制元素反转数组,这将始终只由2 std::vector组成。CGAL_Polyline也是一个包含点的向量。

目前我正在做这样的反向(目前工作,但我不知道这是否是一个正确的方式):

std::vector<CGAL_Polyline> m[2]; //array to reverse
std::vector<CGAL_Polyline> m_[2]{  m[1], m[0] };
m[0] = m_[0];
m[1] = m_[1];

这不起作用,为什么?

std::vector<CGAL_Polyline> m[2]; //array to reverse
std::reverse(m.begin(), m.end());

是否有其他方法来翻转两个向量的顺序?我不需要反转向量中元素的顺序。

使用std::swap:

std::vector<CGAL_Polyline> m[2];
...
std::swap(m[0], m[1]);

这将移动vector的内容而不复制(c++ 11及更高版本)。在此之前,允许复制)。

如果在c++ 11之前(如果是这种情况,升级你的编译器!)你可以使用std::vector::swap:

std::vector<CGAL_Polyline> m[2];
...
m[0].swap(m[1]);

因为它保证是常数。

相关内容

  • 没有找到相关文章

最新更新