21xrx.com
2024-12-22 22:18:35 Sunday
登录
文章检索 我的文章 写文章
C++复制向量(vector)
2023-06-27 17:49:36 深夜i     --     --
C++ 复制 向量(vector)

C++ 中的向量是一种动态数组,可以自动扩容,非常方便。在一些情况下,我们可能需要将向量复制一份,并对副本进行操作,而不会影响原始向量。本文将介绍 C++ 中复制向量的方法。

方法一:使用循环复制

最简单直接的方法是使用循环遍历原始向量,依次将每个元素复制到新向量中。以下是示例代码:


#include <iostream>

#include <vector>

int main() {

  std::vector<int> vec 2;

  std::vector<int> copy(vec.size());

  for (size_t i = 0; i < vec.size(); i++) {

    copy[i] = vec[i];

  }

  // 现在可以使用 copy 向量进行操作了

  copy[0] = 100;

  // 原始向量不会受到影响

  std::cout << vec[0] << std::endl; // 输出 1

  return 0;

}

方法二:使用赋值运算符

C++ 向量有一个名为 `operator=` 的赋值运算符,可以将一个向量复制到另一个向量中。以下是示例代码:


#include <iostream>

#include <vector>

int main() {

  std::vector<int> vec 3;

  std::vector<int> copy = vec; // 复制 vec 到 copy 中

  // 现在可以使用 copy 向量进行操作了

  copy[0] = 100;

  // 原始向量不会受到影响

  std::cout << vec[0] << std::endl; // 输出 1

  return 0;

}

使用 `operator=` 可以更快速地复制向量,而且代码比较简洁。

方法三:使用 std::copy

C++ 标准库提供了一个名为 `std::copy` 的函数,可以将一个向量复制到另一个向量中。以下是示例代码:


#include <iostream>

#include <vector>

#include <algorithm>

int main() {

  std::vector<int> vec 4;

  std::vector<int> copy(vec.size());

  std::copy(vec.begin(), vec.end(), copy.begin()); // 将 vec 复制到 copy 中

  // 现在可以使用 copy 向量进行操作了

  copy[0] = 100;

  // 原始向量不会受到影响

  std::cout << vec[0] << std::endl; // 输出 1

  return 0;

}

在复制向量时,我们需要确保新向量的大小与原始向量相等。以上三种方法都可以实现向量的复制,并且非常方便。开发者可以根据实际需要选择适合自己的方法。

  
  

评论区

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