黑马c++ STL常用算法 笔记(1) 遍历算法

简介: 黑马c++ STL常用算法 笔记(1) 遍历算法

for_each //遍历容器

transform //搬运容器到另一个容器中

1.for_each:遍历容器

// 常用遍历算法:for_each
/*
for_each(iterator beg, iterator end, _func);
// 遍历算法 遍历容器元素
// beg 开始迭代器
// end 结束迭代器
// _func 函数或者函数对象
*/
#include <bits/stdc++.h>
using namespace std;
// 普通函数
void print01(int val)
{
  cout << val << " ";
}
// 仿函数
class print02
{
public:
  void operator()(int val)
  {
    cout << val << " ";
  }
};
void test01()
{
  vector<int> v;
  for (int i = 0; i < 10; i++)
  {
    v.push_back(i);
  }
  for_each(v.begin(), v.end(), print01); // 普通函数用函数名 0 1 2 3 4 5 6 7 8 9
  cout << endl;
  for_each(v.begin(), v.end(), print02()); // 仿函数加括号 0 1 2 3 4 5 6 7 8 9
}
int main()
{
  test01();
}
/*
总结:
for_each在实际开发中是最常用遍历算法,需要熟练掌握
*/


2.transform:搬运容器到另一个容器中

// 常用遍历算法:transform
/*
transform(iterator beg1, iterator end1, iterator beg2, _func);
//beg1 源容器开始迭代器
//end1 源容器结束迭代器
//beg2 目标容器开始迭代器
//_func 函数或者函数对象(加减乘除运算)
*/
#include <bits/stdc++.h>
using namespace std;
 
// 仿函数
class transform1
{
public:
  int operator()(int val)
  {
    return ++val; // 也可做运算后再return
  }
};
class print
{
public:
  void operator()(int val)
  {
    cout << val << " ";
  }
};
void test01()
{
  vector<int> v; // 原容器
  for (int i = 0; i < 10; i++)
  {
    v.push_back(i);
  }
  vector<int> vtarget; // 目标容器
  // 目标容器需提前开辟空间!!!!!
  vtarget.resize(v.size());
  transform(v.begin(), v.end(), vtarget.begin(), transform1()); // 仿函数加括号
  for_each(v.begin(), v.end(), print());                        // 0 1 2 3 4 5 6 7 8 9
  cout << endl;
  for_each(vtarget.begin(), vtarget.end(), print()); // 1 2 3 4 5 6 7 8 9 10
}
int main()
{
  test01();
}
/*
总结:
搬运的目标容器必须要提前开辟空间,否则无法正常搬运
*/


相关文章
|
2天前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
10 4
|
2天前
|
存储 算法 C++
C++一分钟之-标准模板库(STL)简介
【6月更文挑战第21天】C++ STL是高效通用的算法和数据结构集,简化编程任务。核心包括容器(如vector、list)、迭代器、算法(如sort、find)和适配器。常见问题涉及内存泄漏、迭代器失效、效率和算法误用。通过示例展示了如何排序、遍历和查找元素。掌握STL能提升效率,学习过程需注意常见陷阱。
20 4
|
7天前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
33 10
|
4天前
|
存储 编译器 C++
|
3天前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
6天前
|
算法 Java 索引
【算法】重建二叉树并进行后序遍历的Java实现
【算法】重建二叉树并进行后序遍历的Java实现
17 5
|
6天前
|
存储 算法 Java
广度优先搜索(Breadth-First Search,BFS)是一种用于图的遍历或搜索的算法。
广度优先搜索(Breadth-First Search,BFS)是一种用于图的遍历或搜索的算法。
|
6天前
|
人工智能 算法 Java
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。
|
6天前
|
存储 算法
【二叉树】数据结构——BST二叉树基本概念及算法设计(插入、删除、遍历操作)
【二叉树】数据结构——BST二叉树基本概念及算法设计(插入、删除、遍历操作)
|
3天前
|
C++
C++一分钟之-类与对象初步
【6月更文挑战第20天】C++的类是对象的蓝图,封装数据和操作。对象是类的实例。关注访问权限、构造析构函数的使用,以及内存管理(深拷贝VS浅拷贝)。示例展示了如何创建和使用`Point`类对象。通过实践和理解原理,掌握面向对象编程基础。
30 2
C++一分钟之-类与对象初步

热门文章

最新文章