堆的构建及实例化

示例代码

 1 #include <iostream>
 2 using namespace std;
 3 class A
 4 {
 5     public:
 6         A(){cout<<"构造函数执行完毕\n";}
 7 };
 8 int main()
 9 {
10     A *a;//构建一个属于A类的指针
11     a=new A;//使用new运算符创建一个堆,它的大小由类A的数据成员的类型和数量决定
12             //由于堆在内存中都是匿名的,因此这里并没有为它命名,只是将它的内存地
13             //址赋值给了指针a
14     return 0;
15 }

演示结果

使用new运算符创建并实例化一个对象

 1 #include <iostream>
 2 using namespace std;
 3 class A
 4 {
 5 public:
 6     A(int a, int b){ i = a; j = b; cout << "构造函数执行完毕\n"; }
 7     void print(){ cout << i*j << endl; }
 8     void set(int a, int b){ i = a; j = b; }
 9 private:
10     int i, j;
11 };
12 int main()
13 {
14     A *a = new A(1, 2);//在创建一个对象时同时实例化它的数据成员
15     a->print();//输出结果   #注意不要忘记括号()
16     a->set(7, 8);//利用成员函数初始化它的数据成员
17     a->print();//输出结果
18     return 0;
19 }

结果演示

时间: 2024-11-03 21:26:13

堆的构建及实例化的相关文章

二叉堆的构建(Java)

1 package com.rao.linkList; 2 3 /** 4 * @author Srao 5 * @className BinaryHeap 6 * @date 2019/12/3 14:14 7 * @package com.rao.linkList 8 * @Description 二叉堆 9 */ 10 public class BinaryHeap { 11 12 /** 13 * 在插入一个节点之后,数组进行上浮 14 * @param arr:左孩子等于n*2+1,右

C++中栈和堆上建立对象的区别

在C++中类的对象建立分为两种,一种是静态建立,如A a:另一种是动态建立,如A* p=new A(),A*p=(A*)malloc():静态建立一个类对象,是由编译器为对象在栈空间中分配内存,通过直接移动栈顶指针挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象.动态建立类对象,是使用new运算符将对象建立在堆空间中,在栈中只保留了指向该对象的指针.栈是由编译器自动分配释放 ,存放函数的参数值,局部变量的值,对象的引用地址等.其操作方式类似于数据结构中的栈,通常都是被调用时处于存储

数据结构 二叉堆 &amp; 堆排序

二叉堆,是一个满二叉树,满足堆的性质.即父节点大于等于子节点(max heap)或者是父节点小于等于子节点(min heap).二叉堆的如上性质常用于优先队列(priority queue)或是用于堆排序. 由于max heap 与min heap类似,下文只针对min heap进行讨论和实现. 如上图,是根据字母的ASCII码建立的最小堆. 我们用数组对满二叉树采用宽度优先遍历存储堆结构,如下图所示: 从数组下标1开始存储堆,这样的处理方式可以得到如下性质: 1.堆中的每个父节点k,他的两个子

听起来很吊的堆与栈其实也不过如此

一.在讲堆栈之前,我们先看看值类型和引用类型: 1,我们看看值类型与引用类型的存储方式: 引用类型:引用类型存储在堆中.类型实例化的时候,会在堆中开辟一部分空间存储类的实例.类对象的引用还是存储在栈中. 值类型:值类型总是分配在它声明的地方,做为局部变量时,存储在栈上:类对象的字段时,则跟随此类存储在堆中. 什么是堆什么是栈我们后面解释. 图1-1 2,我们再看看引用类型与值类型的区别: ①引用类型和值类型都继承自Systerm.Object类.不同之处,几乎所有的引用类型都是直接从Syster

【数据结构】——堆及其应用

一.堆先说说堆概念:如果有一个关键码的集合K = {k0,k1, k2,-,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >=K2i+1 且 Ki >= K2i+2) i =0,1,2-,则称为小堆(或大堆). 小堆(大堆)中:任一结点的关键码均小于(大于)等于它的左右孩子的关键码,位于堆顶结点的关键码最小(最大),从根节点到每个结点的路径上数组元素组成的序列都是递增(递减)的堆存储在下标

Java堆和栈的区别和介绍,JVM的堆和栈

一.Java的堆内存和栈内存 Java把内存划分成两种:一种是堆内存,一种是栈内存. 堆:主要用于存储实例化的对象,数组.由JVM动态分配内存空间.一个JVM只有一个堆内存,线程是可以共享数据的. 栈:主要用于存储局部变量和对象的引用变量,每个线程都会有一个独立的栈空间,所以线程之间是不共享数据的. 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分

堆的时间复杂度

构建堆的过程,O(N) 从下面的元素向下沉 package sortdemo; import java.util.Arrays; /** * Created by chengxiao on 2016/12/17. * 堆排序demo */ public class HeapSort { public static void main(String []args){ int []arr = {9,8,7,6,5,4,3,2,1}; sort(arr); System.out.println(Arr

java 堆 排序学习

/** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * <p> All rights reserved. - https://github.com/Jasonandy/Java-Core-Advanced </p> * <p> Created by Jason</p> * </body> * </html> *

数据结构中的堆(Heap)

堆排序总结 这是排序,不是查找!!!查找去找二叉排序树等. 满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树. 构建顶堆: a.构造初始堆 b.从最后一层非叶节点开始调整,一直到根节点 c.如果还不满足,重复b操作,直到构建出一个大顶堆或小顶堆. 构建大顶堆:每次调整都是从父节点.左孩子节点.右孩子节点三者中选择最大者跟父节点进行交换. (重点)输出排序后的序列:一个大顶堆,获得最大值后, 1. 输出堆顶: 2. 将最后一个堆元素送入堆顶,堆被破坏: 3. 重新构建一个堆,此时,从堆顶开始