前言 网上关于C++对象模型的资料有很多,找到了两篇较为详实细致,理论与实践结合得较好,图文并茂的文章,在此做个总结转载,用以巩固与温故。(之所以是两篇,是因为这两篇内容大体一致,但出处却是两位作者,不知是谁原创,索性做个汇总。。。原文中存在多处错误或语义表述不清,已做修正补充) 图文和代码源自两处,略有不同。 附原文链接: 图说C++对象模型:对象内存布局详解(代码参考) C++对象模型(图文参考) 正文 引用...
方法一:用vector模拟实现stack #include<iostream> #include<list> #include<vector> using namespace std;template <class T> class Stack { public:void push(const T&val){st_.push_back(val);}void pop(){st_.pop_back();}T& top(){return st_.back();}size_t size(){return st_.size();}bool empty(){return st_.empty();}private:vector<T> st_;};void test() {Stack<int>st;st.push(1);st.push(2);st.push(3);st.push(4);s...
文本文件 操作文件三大类: 1.ofstream:写操作 2.ifstream :读操作 3.fstream:读写操作 写文件步骤如下: 1.包含头文件: #include 2.创建流对象 ofstream ofs; 3.打开文件 ofs.open(“文件路径”,打开方式) 4.写数据 ofs<<“写入的数据” 5.ofs.close(); 文件打开方式: ios::in 为读文件而打开文件 ios::out 为写文件而打开文件 ios::ate 初始位置:文件尾 ios::app 追加方式写文件 ios::trunc 如果文件存在,则先删除,在创建 ...
计算机程序设计语言的发展历程 机器语言到与汇编语言->高级语言->面向对象的语言面向对象的编程语言的特点 面向对象的编程语言设计出发点是更直接描述客观世界存在的事物(对象)以及它们之间的关系。面向对象的编程语言将客观事物看作是属性和行为(或称服务)的对下个,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),成为类。 抽象,封装,继承,多态。结构化程序设计方法,它的优点缺点有哪些 自顶而下,逐...
/ // main.cpp // _08daycontactlist // // Created by AchesonDan 贪玩巴斯 on 2021/3/31. // 按照B站《黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难》学习总结 /* 注意点一: switch是语句 return语句是退出 函数 回到 调用函数的地方。 如果switch 和return 在 main 函数里,则程序结束。 注意点二: 结论:if语句里的return,使程序跳出if所在的函数,返回到母函数中继续执行。 注意点三: system("cls"...
零基础想要学好C/C++编程?那就赶紧看看吧! 1、学习C/C++编程语言基础 掌握语言基础是第一步,如果不了解基础知识,那么就不知道自己是否做错了或者接下来该怎么做。掌握C/C++相关的基础知识,如C语言基本语法、C++基础语法或者容器、迭代器和虚函数等等。 2.编写小程序 对大多数的基础知识和概念足够熟悉,并且能够以某种方式将它们联系起来,那么可以进行下一步了,开始尝试编写一些非常基本的C语言程序,如计算器的实现、C语言...
看到一些代码,使用 new [] 创建并分配内存了数组,且并未使用 delete [] ,而是使用 delete 进行释放该数组。所以回顾一下 delete 和 delete [] 的区别。 使用 delete 释放 new [] 创建并分配内存的数组,该操作先释放数组的内存,并调用数组第一个对象的析构函数。对于基础类型(如:int)的数组来说,并没有额外的资源需要在析构函数中释放,所以即便未调用数组后续对象的析构函数,也不会出现内存泄漏的问题。 但是对于一些自定...
在大量数据中找最大或最小一些元素时,使用堆排序往往会很高效,那么堆排序是如何实现的呢?首先通过堆进行排序必须得建一个堆,其次得明白升序,降序该建大堆还是小堆? 对于堆排序,我们必须得清楚以下几点: 1.通常我们采用升序建大堆,降序建小堆的方法; 2.建好堆之后,下来就要对堆进行排序了; 以升序为例:首先将这组数据建一个大堆,建好之后交换堆顶与最后一个元素(堆顶元素肯定是堆中最大的数),这会儿最大的那个数就调...
文章目录 1.有参有反函数2.有参无返3.无参有返4.无参无返1.有参有反函数 编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数 【示例代码】 #include<iostream> using namespace std;//最大公约数 int GCD(int a, int b) {int gcd;int max = a;if (a > b)max = b;for (int i = 1; i <= max; i++){if ((a%i == 0) && (b%i == 0))gcd = i;}return gcd;}//最小公倍数 int LCM(int a, int b) {int lcm;int min = a;if (...
1、deque赋值操作 功能:给deque容器进行赋值函数原型: deque& operator=(const deque &deque); //重载等号操作符 assign(beg, end); //将[beg, end]区间中的数据拷贝赋值给本身 assign(n, elem); //将n个elem拷贝赋值给本身 2、deque大小操作 功能:对deque容器的大小进行操作函数原型: deque.empty(); //判断容器是否为空 deque.size(); //返回容器中元素的个数 deque.resize(num); //重新指定容器的长度为num,若容器...
有关B|C语言算法是搭建网站程序和软件的灵魂,作为一名优秀的网站开发程序码农,只有对一些基础的算法有着全面的掌握,才会在日后搭建网站程序编写代码的过程中显得从容淡定。1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。2、B/C语言程序系统回文检查3、B/C语言程序系统质数检查1既不是质数也不是合数。4、B/C语言程序打印金字塔和三角形 使用 * 建立三角...
一、C++入门关键字:c++一共有63个关键字。1、命名空间;在c/c++中,变量,函数和类都是大量存在的,这些变量,函数,类的名称都是作用域全局中,名字一样可能造成冲突。使用命名空间的目的是对标识符的名称进行本地化。namespace关键字就是处理命名空间的。命名空间定义:namespace 空间名字 {};{}里面为命名空间的成员,也就是这些成员属于该空间里面。这些成员变量不能随意使用,使用需要根据命名空间使用规则来进行使用。如 ...
一、结论 使用C++11,并且导入头文件 #include<string>other ---> stringto_string (int / long / float /...) string --->otherstoistring 转 intstolstring 转longstollstring 转 long longstoulstring 转 unsigned longstoullstring 转 unsigned long longstofstring 转 floatstodstring 转 double 注:在日常使用中, 最常用的是stoll和stod这两个函数, stoll可以兼容stoi,stol; 而stod可以兼容stof。 ...
1.list释义: list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表有点一样,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。但是list并不要求在一段连续的内存中。 1.1list的实现: list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;数据域则是本...
C++ string 类型 用string 对象处理字符串 用字符数组处理字符串时,常常会发生数组越界的问题。因此C++标准模板库中设计了“string”数据类型,专门处理字符串。string 类型的变量就是专门用来处理字符串 的,也叫“string”对象。string类型并不是C++语言的基本数据类型,而是c++ 标准模板库中的一个“类”。 在C++编程时,优先考虑使用string对象来处理字符串,因为其用法比字符数组更简单,而且不易出错。 定义string对象 定义...