21xrx.com
2024-11-05 14:50:57 Tuesday
登录
文章检索 我的文章 写文章
C++向量(容器)变换
2023-06-27 21:14:51 深夜i     --     --
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的元素。

  
  

评论区

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