21xrx.com
2025-04-15 10:06:33 Tuesday
文章检索 我的文章 写文章
C++向量(容器)变换
2023-06-27 21:14:51 深夜i     15     0
C++ 向量 容器 变换

C++向量容器是一种非常方便的数据结构类型,它可以存储同类数据,可以进行随机访问,也支持动态添加/删除元素。在实际应用中,经常会遇到需要对向量进行变换的情景,本文将介绍几种常见的向量变换方法。

1. 遍历操作

遍历操作是最基本的向量变换方法,它可以遍历整个向量并对每个元素进行处理。下面是一个例子,对向量中的每个元素都加上1:

#include <iostream>
#include <vector>
int main() {
  std::vector<int> vec 2;
  for (auto& i : vec) {
    i += 1;
  }
  for (auto i : vec)
    std::cout << i << " ";
  
  std::cout << std::endl;
  return 0;
}

输出结果为:2 3 4 5 6

在这个例子中,我们使用了C++11中的range-based for循环来遍历向量中的每个元素,使用引用类型的i来修改每个元素的值。

2. 映射操作

映射操作是对向量中的每个元素进行一个数学操作,并生成一个新的向量。这种方法通常使用STL中的transform函数,下面是一个例子,将向量中的每个元素都平方:

#include <iostream>
#include <vector>
#include <algorithm>
int main() {
  std::vector<int> vec 4;
  std::vector<int> new_vec(vec.size());
  std::transform(vec.begin(), vec.end(), new_vec.begin(), [](int x) -> int { return x * x; });
  for (auto i : new_vec)
    std::cout << i << " ";
  
  std::cout << std::endl;
  return 0;
}

输出结果为:1 4 9 16 25

在这个例子中,我们使用了STL中的transform函数,第一个参数为源向量的起始位置,第二个参数为源向量的结束位置,第三个参数为结果向量的起始位置,第四个参数为一个lambda函数,对源向量中的每个元素进行平方操作,并将结果存储在结果向量中。

3. 过滤操作

过滤操作是指从一个向量中筛选出符合某个条件的元素,并生成一个新的向量。这种方法通常使用STL中的copy_if函数,下面是一个例子,将向量中大于2的元素筛选出来,并生成一个新的向量:

#include <iostream>
#include <vector>
#include <algorithm>
int main() {
  std::vector<int> vec 4;
  std::vector<int> new_vec;
  std::copy_if(vec.begin(), vec.end(), std::back_inserter(new_vec), [](int x) return x > 2; );
  for (auto i : new_vec)
    std::cout << i << " ";
  
  std::cout << std::endl;
  return 0;
}

输出结果为:3 4 5

在这个例子中,我们使用了STL中的copy_if函数,第一个参数为源向量的起始位置,第二个参数为源向量的结束位置,第三个参数为结果向量的插入迭代器back_inserter,这样就可以动态向结果向量中添加元素了,第四个参数为一个lambda函数,筛选出大于2的元素。

  
  

评论区

请求出错了