- 博客(59)
- 收藏
- 关注
原创 C++string容器-字符串拼接
string字符串拼接功能描述:实现在字符串末尾拼接字符串函数原型:代码如下:#include <iostream>using namespace std;#include <cstring>//string字符串拼接void test01() { string str1 = "我"; str1 += "爱玩游戏"; cout << "str1 = " << str1 << endl; str1 += ';'; c
2021-01-31 20:53:05 277 2
原创 C++map容器-排序
map容器排序利用仿函数,可以改变排序规则代码如下:#include <iostream>using namespace std;#include <map>//map容器 排序class Mycompare { public: bool operator()(int v1, int v2) { //降序 return v1 > v2; }};void test01() { map<int, int, Mycompare&g
2021-01-31 00:11:17 221
原创 C++map容器-插入和删除
map插入和删除功能描述:map容器进行插入数据和删除数据函数原型:代码如下:#include <iostream>using namespace std;#include <map>//map容器 插入和删除void printMap(map<int, int> &m) { for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) { cout &l
2021-01-31 00:11:02 539
原创 C++map容器-查找和统计
map查找和统计功能描述:对map容器进行查找数据以及统计数据函数原型:代码如下:#include <iostream>using namespace std;#include <map>//map容器 查找和统计void test01() { //查找 map<int, int >m; m.insert(pair<int, int>(1, 10)); m.insert(pair<int, int>(2, 20));
2021-01-31 00:10:29 558
原创 C++map容器-大小和互换
map大小和互换功能描述:统计map容器大小以及交换map容器函数原型:代码如下:#include <iostream>using namespace std;#include <map>//map容器 大小和交换void test01() { map<int, int>m; m.insert(pair<int, int>(1, 10)); m.insert(pair<int, int>(2, 20)); m.ins
2021-01-31 00:10:06 1517
原创 C++map容器-构造和赋值
map基本概念map构造和赋值功能描述:对map容器进行构造和赋值操作函数原型:代码如下:#include <iostream>using namespace std;//map容器 构造和赋值#include <map>void printMap(map<int, int> &m) { for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
2021-01-31 00:09:36 2965
原创 C++set容器-内置类型指定排序
set容器排序利用访函数,可以改变排序规则一、set存放内置数据类型代码如下:#include <iostream>using namespace std;#include <set>class Mycompare { public: bool operator()(int v1, int v2) { return v1 > v2; }};//set容器排序void test01() { set<int >s1; s1.i
2021-01-31 00:09:20 506 6
原创 C++pair对组的创建
pair对组创建功能描述:成对出现的数据,利用对组可以返回两个数据两种创建方式:代码如下:#include <iostream>using namespace std;#include <cstring>void test01() { //第一种方式 pair<string, int>p("Tom", 20); cout << "姓名:" << p.first << "年龄:" << p.seco
2021-01-31 00:08:41 240
原创 C++set和multiset区别
区别:代码如下:#include <iostream>using namespace std;#include <set>//set容器 和multiset容器的区别void test01() { set<int >s; pair<set<int >::iterator, bool> ret = s.insert(10); if (ret.second) { cout << "第一次插入成功" <&l
2021-01-31 00:08:10 131
原创 C++set容器-查找和统计
set查找和统计功能描述:对set容器进行查找数据以及统计数据函数原型:代码如下:#include <iostream>using namespace std;#include <set>//set查找和统计void test01() { //查找 set<int >s1; //插入数据 s1.insert(10); s1.insert(20); s1.insert(30); s1.insert(40); set<int
2021-01-31 00:07:34 1151
原创 C++set容器-插入和删除
set插入和删除功能描述:set容器进行插入数据和删除数据函数原型:代码如下:#include <iostream>using namespace std;#include <set>void printSet(set<int > &s) { for (set<int >::iterator it = s.begin(); it != s.end(); it++) { cout << *it << "
2021-01-30 11:28:41 2512
原创 C++set容器-大小和交换
set大小和交换功能描述:统计set容器大小以及交换set容器函数原型:代码如下:#include <iostream>using namespace std;#include <set>//set容器 大小和容器void printSet(set<int > &s) { for (set<int >::iterator it = s.begin(); it != s.end(); it++) { cout <<
2021-01-30 11:19:07 1674
原创 C++set容器-构造和赋值
set基本概念简介:所有元素都会自动在插入时自动被排序,set容器也叫集合容器本质:set/multiset属于关联式容器,底层结构是用二叉树排序set和multiset区别:1.set不允许容器中有重复的元素2.multiset允许容器中有重复的元素set构造和赋值功能描述:创建set容器以及赋值函数原型:代码如下:#include <iostream>using namespace std;#include <set>//set容器的构造和赋值、
2021-01-30 10:00:15 1760 2
原创 C++vector容器-预留空间
vector预留空间功能描述:减少vector在多态扩展容量时的扩展次数函数原型:reserve(int len);//容器预留len个元素长度,预留位置不初始化,元素不可访问。当我们往vector容器中push_back大量的数,vector就会开辟多次空间,如果我们最开始就告诉vector要预留多少空间,vector就不用开辟那么多次空间了利用reserve预留空间代码如下:#include <iostream>using namespace std;//vector预留
2021-01-30 09:32:55 1999
原创 C++vector容器-互换容器
vector容器互换功能描述:实现两个容器内元素进行互换函数原型:swap(vec);//将vec与本身的元素互换1.基本使用代码如下:#include <iostream>using namespace std;//vector容器互换#include <vector>//1.基本使用void printVector(vector<int >v) { for (vector<int >::iterator it = v.begin
2021-01-30 09:21:25 1380 1
原创 C++vector容器-数据存取
vector数据存取功能描述:对vector中的数据的存取操作函数原型:代码如下:#include <iostream>using namespace std;#include <vector>//vector容器 数据存取void test01() { vector<int >v1; for (int i = 0; i < 10; i++) { v1.push_back(i); } //利用[]访问vector中的元素 for
2021-01-30 01:25:30 1538
原创 C++vector容器-插入和删除
vector插入和删除功能描述:对vector容器进行插入,删除操作函数原型:代码如下:#include <iostream>using namespace std;#include <vector>//vector插入和删除void printVector(vector<int > &v) { for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
2021-01-30 01:19:17 406 2
原创 C++vector容器-容量和大小
vector容量和大小功能描述:对vector容器的容量和大小操作函数原型:代码如下:#include <iostream>using namespace std;#include <vector>//vector容器的容量和大小操作void printVector(vector<int > &v) { for (vector<int >::iterator it = v.begin(); it != v.end(); it++
2021-01-30 01:08:50 1388
原创 C++vector容器-赋值操作
vector赋值操作功能描述:给vector容器进行赋值函数原型:代码如下:#include <iostream>using namespace std;#include <vector>//vector赋值操作void printVector(vector<int> &v) { for (vector<int >::iterator it = v.begin(); it != v.end(); it++) { cout &
2021-01-30 00:46:29 1982
原创 C++vector容器-构造函数
vector数据结构和数组非常相似,也称为单端数组,在数组的尾段可以做插入,删除操作vector不同于普通数组,vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器结构:vector容器的迭代器是支持随机访问的迭代器vector构造函数功能描述:创建vector容器函数原型:代码如下:#include <iostream>using namespace std;#include &l
2021-01-30 00:28:41 923
原创 C++生成随机数
C++中生成随机数常用这两个函数:rand()和srand()rand()函数,生成一个范围在[0,RAND_MAX]的随机数,RAND_MAX的值为32767其中RAND_MAX定义在cstdlib头文件中。#include <iostream>using namespace std;#include <cstdlib>int main() { cout << RAND_MAX << endl; cout << rand()
2021-01-29 02:49:09 689
原创 C++string容器-赋值操作
功能描述:给string字符串进行赋值代码如下:#include <iostream>using namespace std;#include <cstring>void test01() { string str1; str1 = "hello world"; cout << "str1 = " << str1 << endl; string str2; str2 = str1; cout << "str
2021-01-27 00:45:27 240
原创 C++string容器-构造函数
本质:string是C++风格的字符串,而string本质上是一个类string和char区别:1.char是一个指针2.string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器string构造函数原型:1.string();创建一个空的字符串,例如:string str;2.string(const char* s);使用字符串s初始化3.string(const string&str);使用一个string对象初始化另一个string对象4.
2021-01-27 00:45:07 146
原创 C++多态的基本语法与原理剖析
多态分为两类1.静态多态:函数重载和运算符重载属于静态多态,复用函数名2.动态多态:派生类和虚函数实现运行时多态静态多态和动态多态区别:1.静态多态的函数地址早绑定,编译阶段确定函数地址2.多态多态的函数地址晚绑定,运行阶段确定函数地址首先让我们看这段代码:#include <iostream>using namespace std;class Animal { public: void speak() { cout << "动物在说话" <&l
2021-01-27 00:44:35 193
原创 C++菱形继承
菱形继承概念:1.两个派生类继承同一个基类2.又有某个类同时继承着两个派生类这种继承被称为菱形继承,或者钻石继承举个例子:菱形继承问题:1.羊继承了动物的数据,鸵同样继承了动物的数据,当羊驼使用数据时,就会产生二义性2.羊驼继承自动物的数据继承了两份,其实我们应该清楚,比如年龄这份数据我们只需要一份就可以我们可以利用虚继承解决菱形继承资源浪费的问题代码如下:#include <iostream>using namespace std;class Animal { p
2021-01-27 00:44:11 193
原创 C++多继承语法
C++允许一个类继承多个类多继承可能会引发父类中有同名成员出现,需要加作用域区分C++实际开发中不建议用多继承语法:class 子类 : 继承方式 父类1 , 继承方式 父类2 …代码如下:#include <iostream>using namespace std;//父类class Base1 { public: Base1() { m_A = 100; } int m_A;};class Base2 { public: Base2() {
2021-01-27 00:43:49 192
原创 C++继承同名静态成员处理
问题:继承中同名的静态成员在子类对象如何访问?静态成员和非静态成员出现同名,处理方式一致1.访问子类同名成员 直接访问即可2.访问父类同名成员 需要加作用域首先我们先介绍一下静态成员属性的特点:1.编译阶段分配内存2.所有对象共享同一份数据3.类内声明,类外初始化一、同名静态成员属性代码如下:#include <iostream>using namespace std;//继承中的同名静态成员处理方式class Base { public: sta
2021-01-26 19:25:21 331
原创 C++继承同名成员处理方式
问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?1.访问子类同名成员 直接访问即可2.访问父类同名成员 需要加作用域一、同名成员属性处理方式代码如下:#include <iostream>using namespace std;class Base { public: Base() { m_A = 100; } int m_A;};class Son : public Base { public: So
2021-01-26 18:12:02 247
原创 C++继承中构造和析构顺序
子类继承父类后,当创建子类对象,也会调用父类的构造函数问题:父类和子类的构造和析构顺序是谁先谁后?代码如下:#include <iostream>using namespace std;//继承中的构造和析构顺序class Base { public: Base() { cout << "Base构造函数!" << endl; } ~Base() { cout << "Base析构函数!" << endl;
2021-01-26 17:57:34 155
原创 C++继承中的对象模型
问题:从父类继承过来的成员,哪些属于子类对象中?首先我们先看这段代码:#include <iostream>using namespace std;//继承中的对象模型class Base { public: int m_A; protected: int m_B; private: int m_C;};class Son : public Base { public: int m_D;};void test01() { cout <
2021-01-26 16:28:05 112
原创 C++继承的基本语法
首先我们看看没有继承会造成什么问题?代码如下:#include <iostream>using namespace std;//普通实现页面//Java页面class Java { public: void header() { cout << "首页,公开课,登录,注册...(公共头部)" << endl; } void footer() { cout << "帮助中心,交流合作,站内地图...(公共底部)"
2021-01-26 15:54:19 254
原创 C++函数调用运算符重载
1.函数调用运算符()也可以重载2.由于重载后使用方式非常像函数的调用,因此也称为仿函数3.仿函数没有固定写法,非常灵活C++函数调用运算符重载代码如下:#include <iostream>using namespace std;#include <cstring>//函数调用运算符重载class MyPrint { public: //重载函数调用运算符 void operator()(string test) { cout <<
2021-01-26 14:46:42 311
原创 C++关系运算符重载
作用:重载关系运算符,可以让两个自定义类型对象进行对比操作代码如下:#include <iostream>using namespace std;#include <cstring>//重载关系运算符class Person { public: Person(string name, int age) { m_Name = name; m_Age = age; } bool operator==(Person &p) { if
2021-01-26 14:33:58 87
原创 C++赋值运算符重载
首先我们要知道:C++编译器至少给一个类添加4个函数1.默认构造函数(无参,函数体为空)2.默认析构函数(无参,函数体为空)3.默认拷贝构造函数,对属性进行值拷贝4.赋值运算符operator=,对属性进行值拷贝如果类中有属性指向堆区,做赋值操作时也会出现深浅拷贝问题赋值运算符重载代码如下:#include <iostream>using namespace std;//赋值运算符重载class Person { public: Person(int age) {
2021-01-26 14:23:26 205
原创 C++递增运算符重载
作用:通过重载递增运算符,实现自己定义的数据类型代码如下:#include <iostream>using namespace std;//重载递增运算符//自定义类型class MyInteger { friend ostream &operator<<(ostream &cout, MyInteger myint); public: MyInteger() { m_Num = 0; } //重载前置++运算符 返回引用
2021-01-26 00:28:04 295
原创 C++左移运算符重载
作用:可以输出自定义数据类型代码如下:#include <iostream>using namespace std;//左移运算符重载class Person { public: int m_A; int m_B;};ostream &operator<<(ostream &cout, Person &p) { //本质 operator<<(cout,p) 简化 cout << p cout &l
2021-01-25 23:46:13 200
原创 C++加号运算符重载
运算符重载概念:对已有的运算符重新定义,赋予其另一种功能,以适应不同的数据类型加号运算符重载:1.成员函数重载加号:#include <iostream>using namespace std;//加号运算符重载//1.成员函数重载+号class Person { public: //1.成员函数重载+号 Person operator+(Person &p) { Person temp; temp.m_A = this->m_A +
2021-01-25 23:14:40 309
原创 C++友元
友元的目的就是让一个函数或者类访问另一个类中私有成员友元的关键字:friend友元的三种实现:1.全局函数做友元2.类做友元3.成员函数做友元一.全局函数做友元#include <iostream>using namespace std;#include <cstring>class Building { //告诉编译器goodGay全局函数是Building类的好朋友,可以访问类中的私有内容 friend void goodGay(Building
2021-01-25 22:17:25 84
原创 C++const修饰成员函数
常函数:1.成员函数后加const后,我们称这个函数为常函数。2.常函数内不可以修改成员属性3.成员属性声明加关键字mutable后,在常函数中依然可以修改常对象:1.声明对象前加const称该对象为常对象2.常对象只能调用常函数...
2021-01-25 21:32:10 247 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人