STL主要构成:
容器(Containers):用来管理某一类对象的集合。例:deque,list,vector,map等;
算法(Algorithms):作用于容器;提供执行各种操作的方式,包括对容器内容初始化,排序,转换,搜索等;
迭代器(iterators):迭代器用于遍历对象集合的元素,集合可能是容器,也可能是容器的子集;
关于指针:(C++支持空指针)
int *ip;一个整型的指针
double *dp:一个double型的指针;
float *fp:一个浮点型的指针;
char ch:一个字符型的指针;
C++Null指针:
#include
using namespace std;
int main()
{
intptr=NULL;
cout<<“ptr的值是”<<ptr;
return 0;
}
编译执行:ptr的值是0
若需检查空指针,可以使用if语句;
C++指针的算术运算:
递增一个指针:
#include
using namespace std;
const int MAX = 3;
int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr; // 指针中的数组地址
ptr = var;
for (int i = 0; i < MAX; i++)
{ cout << “Address of var[” << i << "] = ";
cout << ptr << endl;
cout << “Value of var[” << i << "] = ";
cout << *ptr << endl; // 移动到下一个位置
ptr++;}
return 0; }
递减一个指针
同样地,对指针进行递减运算,即把值减去其数据类型的字节数,如下所示:
实例
#include
using namespace std;
const int MAX = 3;
int main () { int var[MAX] = {10, 100, 200};
int *ptr; // 指针中最后一个元素的地址
ptr = &var[MAX-1];
for (int i = MAX; i > 0; i–) {
cout << “Address of var[” << i << "] = ";
cout << ptr << endl;
cout << “Value of var[” << i << "] = ";
cout << *ptr << endl; // 移动到下一个位置 ptr–; }
return 0; }
指针的比较
指针可以用关系运算符进行比较,如 ==、< 和 >。如果 p1 和 p2 指向两个相关的变量,比如同一个数组中的不同元素,则可对 p1 和 p2 进行大小比较。
下面的程序修改了上面的实例,只要变量指针所指向的地址小于或等于数组的最后一个元素的地址 &var[MAX - 1],则把变量指针进行递增:
实例
#include
using namespace std;
const int MAX = 3;
int main () {
int var[MAX] = {10, 100, 200};
int *ptr; // 指针中第一个元素的地址 ptr = var;
int i = 0;
while ( ptr <= &var[MAX - 1] ) {
cout << “Address of var[” << i << "] = ";
cout << ptr << endl;
cout << “Value of var[” << i << "] = ";
cout << *ptr << endl; // 指向上一个位置
ptr++; i++; }
return 0;
}
树的定义:
大至小:第一阶要比第二阶大,一个一个的输入,进行比较同阶不比,上下不同两阶相比,若上面大于下面保持原样,相反交换位置,堆的应用~