21xrx.com
2024-12-22 19:48:19 Sunday
登录
文章检索 我的文章 写文章
C++堆容器介绍
2023-07-13 14:11:43 深夜i     --     --
C++ 堆容器 数据存储 数据类型 元素排列

C++ 作为一种基础的编程语言,拥有着强大的数据结构和容器,其中堆容器就是其之一。堆,是一种特殊的二叉树结构,其在 C++ 中被封装成一个容器,称之为 heap。本文就来介绍一下 C++ 堆容器。

1. 基本概念:

堆容器是一种根据“大者优先”或“小者优先”原则自动调整成员顺序的容器,即堆容器将其元素以一种特定的顺序排列,使得任何时间,其最前端都为堆容器中的最大或最小值,属性定义为只能访问前端数据。

堆容器并不像栈或队列那样能够使用迭代器或类似指针的东西(一般情况下),因为其本质上的元素是没有固定的顺序的。这意味着堆容器不能随意迭代和修改内部元素。

2. 常见的操作:

堆容器提供了一些常见的操作,包括:

(1) push_heap():将指定位置元素推入堆中。

(2) pop_heap():将最大元素弹出堆,放到容器最后端。

(3) make_heap():构造堆,将容器中的元素按照指定原则排列。

(4) sort_heap():对堆容器对元素进行排序。

(5) is_heap():判断容器是否为堆。

(6) is_heap_until():返回容器中从头开始到第一个不满足堆原则的元素位置。

3. 代码实现:

以小者优先堆容器为例,实现代码如下:


#include <iostream>

#include <algorithm>

#include <vector>

using namespace std;

int main() {

  int a[] = 4;

  vector<int> v(a, a + 6);

  make_heap(v.begin(), v.end(), greater<int>());

  v.push_back(0);

  push_heap(v.begin(), v.end(), greater<int>());

  pop_heap(v.begin(), v.end(), greater<int>());

  sort_heap(v.begin(), v.end(), greater<int>());

  for (auto& i : v)

    cout << i << ' ';

  

  cout << endl;

  return 0;

}

输出结果为 1 2 3 4 5 6。

以上就是 C++ 堆容器的基本概念以及常见操作,希望能够帮助到大家。

  
  

评论区

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