C++提高编程

一,模板

1,函数模板

1.1 函数模板的基本语法

1.2 函数模板的注意事项

1.3 普通函数与函数模板的区别

1.4 普通函数与模板函数的调用规则

2,类模板

2.1 模板的局限性

2.2 类模板的基本语法

2.3 类模板与函数模板的区别

2.4 类模板中成员函数的创建时机

2.5 类模板对象做函数参数

2.6 类模板与继承

2.7 类模板成员函数的类外实现

2.8 类模板的分文件编写

2.9 类模板与友元

二,STL的概述

1. STL的概念:C++的面向对象泛型编程,目的就是复用性的提升。

2. STL的基本概念:

        STL(Standard Template Library ,标准库)。

        STL广义上分为:容器(container),算法(algorithm),迭代器(iterator)

        容器和算法之间通过迭代器无缝连接。

        STL几乎所有的代码都采用了模板类或者模板函数。

3. STL的六大组件:

        1. 容器:各种数据结构,如:vector , list , deque , set , map 等,用来存放数据。

        2. 算法:各种常用的算法,如:sort , copy , find , for_each等。

        3. 迭代器:扮演了容器与算法之间的沟通桥梁。

        4. 仿函数:行为类似函数,可作为算法的某种策略。

        5. 适配器:一种用来修饰容器或者仿函数或迭代器的东西。

        6. 空间适配器:负责空间的配置与管理。

1.  vector 存放内置数据类型

容器:  vector

遍历算法:for_each

迭代器:vector<数据类型> :: iterator    每个容器都有专属的迭代器。

利用容器vector存放数据并打印出数据。有三种方式如下

2. vector 存放自定义数据类型

2.1 存放自定义数据类型的遍历方式

 2.2  存放自定义数据类型 指针

 3. vector容器嵌套容器

vector 容器相对于一个数组,嵌套一个容器那就相对于一个二维数组了。

格式:vector< vector<数据类型> > v ;

void test01()
{
	vector< vector<int> > v;

	//创建小容器
	vector<int>v1;
	vector<int>v2;
	vector<int>v3;
	vector<int>v4;

	//向小容器中加入数据
	for (int i = 0; i < 4; i++)
	{
		v1.push_back(i + 1);
		v2.push_back(i +2);
		v3.push_back(i + 3);
		v4.push_back(i + 4);
	}

	//将小容器插入到大容器中
	v.push_back(v1);
	v.push_back(v2);
	v.push_back(v3);
	v.push_back(v4);

	int count=0;
	//通过大容器把所有数据遍历一遍
	for (vector< vector<int> >::iterator it = v.begin(); it != v.end(); it++)
	{
		count++; 

		// 先判断(*it)表示什么:(*it)---vector<int>  表示一个容器。
		//所以想要访问数据需要再对小容器进行一次遍历
		cout << "第" << count << "个容器的数据为:" << endl;
		for (vector<int> ::iterator vit = (*it).begin(); vit != (*it).end(); vit++)
		{
			//此时这里的 (*vit) --- int  数据类型    访问数据: *vit 即可
			cout << *vit << " ";
		}
		cout << endl;
	}
}

4. string容器

1. 本质:

        string是C++风格的字符串,而string本质上是一个类。

2. strging 和 char * 的区别:

        char * 是一个指针 ; 

        string 是一个类,类内部封装了char * ,管理这个字符串,是一个char * 型的容器。

3. 特点:

        string 类封装了很多成员方法;

                例如:查找 find() , 拷贝 copy() ,  删除 delete() , 插入insert() , 替换 replace() 等;

        string 管理 char * 所分配的内存,不用担心赋值越界和取值越界,由类内部负责。

         

4.1 构造函数

构造函数原型:

        1. string() //创建一个空的字符串  例如:string str;

        2. string(const char* s)        //使用字符串s的初始化;

        3. string(const string &str)   //拷贝构造 使用一个string对象初始化另一个string对象

        4. string(int n, char c)        //使用 n 个字符c来初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值