21xrx.com
2024-09-20 00:23:41 Friday
登录
文章检索 我的文章 写文章
C++ 中的向量交换(vector swap)
2023-07-02 14:10:44 深夜i     --     --
C++ 向量 交换 STL 容器

C++ 是一门强大的编程语言,它支持许多不同的数据结构和算法。其中,向量(vector)是一个非常有用的数据结构,在很多情况下都可以取代数组。C++ 中的向量是一个动态数组,它可以自动调整大小以适应元素的数量。

在 C++ 中,我们可以使用 vector::swap 函数来交换两个向量的内容。这个函数非常简单,只需要调用两个向量的 swap 函数即可。以下是一个简单的例子:


#include <iostream>

#include <vector>

using namespace std;

int main()

{

  vector<int> v1 = 3;

  vector<int> v2 = 20;

  cout << "Before swap:" << endl;

  cout << "v1: ";

  for (int i = 0; i < v1.size(); i++) {

    cout << v1[i] << " ";

  }

  cout << endl;

  cout << "v2: ";

  for (int i = 0; i < v2.size(); i++) {

    cout << v2[i] << " ";

  }

  cout << endl;

  v1.swap(v2);

  cout << "After swap:" << endl;

  cout << "v1: ";

  for (int i = 0; i < v1.size(); i++) {

    cout << v1[i] << " ";

  }

  cout << endl;

  cout << "v2: ";

  for (int i = 0; i < v2.size(); i++) {

    cout << v2[i] << " ";

  }

  cout << endl;

  return 0;

}

在这个例子中,我们首先创建了两个向量 v1 和 v2,并将它们填充了一些元素。然后,我们调用了 v1.swap(v2),交换了 v1 和 v2 的内容。最后,我们打印了交换后的向量内容,验证了它们的确已经交换了。

需要注意的是,向量交换并不会影响向量的大小和容量。这意味着,如果两个向量大小不同,交换后它们的大小仍然不同。如果需要将两个向量的大小和容量也交换,可以使用 std::swap 函数,如下所示:


swap(v1, v2);

当然,我们也可以通过临时向量来实现交换:


vector<int> temp = v1;

v1 = v2;

v2 = temp;

但是,这种方法显然比使用 swap 函数要麻烦得多,而且还会浪费额外的空间。

总的来说,C++ 中的向量交换是非常简单和高效的。它可以帮助我们快速地交换两个向量的内容,并且不会浪费额外的空间。如果你在使用向量时需要交换它们的内容,不妨试试这个函数吧。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复