vector
- 数组不可越界操作
- 函数操作多为迭代器,与string有用下表不同
头文件:vector
1.定义
1. 定义向量的对象
关键字<参数列表> 变量名
关键字:容器名字–类名
参数列表:容器的数据类型
2. 容器的数据类型
基本数据类型:eg:int、char……(本质和string一样)
结构体
指针
对象:普通类对象(同结构体)、其他容器对象
(string没有参数列表:string是针对字符串的,转定义后看到string是重命名,本质是有参数列表的)
void STLDefine(){
//基本数据结构
vector<int> vec;
vector<char> str; //相当于string,string专门放char,对字符操作功能更多更强
//结构体
struct STU{
int age;
};
vector<STU> stu1;
vector<struct STU> stu2;
//指针
vector<int*> vec1;
//对象
vector<string> str1;//每一个都是字符串==字符串数组
}
2.构造函数
vector();
vector( size_type num, const TYPE &val );
vector( const vector &from ); 拷贝构造,元素同类型
vector( input_iterator start, input_iterator end ); 迭代器初始化
void STLConstructor(){
vector<int> vec; //空容器
//cout<<vec[0]; //空容器输出崩溃
vector<int> vec1(5);
for(int i=0;i<5;i++) cout<<vec1[i]<<endl; //00000 初始化为0
//cout<<vec1[6]<<endl; //越界输出崩溃
vector<char> vec2(5,'a');
for(int i=0;i<5;i++) cout<<vec2[i]<<endl;
vector<int> vec3(vec1); //参数类型要相同不然会崩溃
for(int i=0;i<5;i++) cout<<vec2[i]<<endl;
vector<int> vec4(5,1);
vector<int>::iterator ite=vec4.begin();//定义了向量的迭代器,返回迭代器头
vector<int>::iterator ite1=vec4.end(); //ite 为元素类型的指针(int*、char*、结构体*)
vector<int> vec5(it