标准模板库(STL)使用说明 之 1 vector

版权声明:请注明转发出处 https://blog.csdn.net/mafucun1988/article/details/89597378

STL(standard template library)是一个具有工业强度的高效C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。
常见的容器主要有 vector,string,deque,pari,set,multiset,map,multimap 8种。
本文介绍:

  • 动态数组vector
    • 创建一个容器 动态数组 指定这个容器中放的数据类型 都是Int
    • 通过vector通过成员方法 向容器的尾部添加元素
    • 拿到了指向第一个元素的迭代器
    • 返回指向最后一个元素下一个位置
    • 创建一个容器 指定里面放Teacher类型的数据
    • vector构造函数
    • vector赋值操作
    • vector容器的插入和删除
//容器
vector<int> v; //创建一个容器 动态数组 指定这个容器中放的数据类型 都是Int
v.push_back(10); //通过vector通过成员方法 向容器的尾部添加元素
v.push_back(4);
v.push_back(5);
v.push_back(4);
vector<int> v; //默认构造 空的vector容器
vector<int> v2(10,5); //带参数构造函数
vector<int> v3(v2.begin(), v2.end());
vector<int> v4(v3); //拷贝构造
int arr[] = {2,3,6,7};
vector<int> v5(arr,arr+ sizeof(arr)/sizeof(int));
//vector赋值操作
vector<int> v;
v.assign(5,1); //赋值方法

vector<int> v1;
v1.assign(v.begin(),v.end()); //将容器V中元素赋值给v1

vector<int> v2;
v2 = v1;
cout << "大小:" << v.size() << endl;
cout << "容量" << v.capacity() << endl;
//插入删除
int arr[] = { 6, 8, 3, 9 };
vector<int> v(arr, arr + sizeof(arr) / sizeof(int));
v.insert(v.begin(),100);  //头部插入元素
v.push_back(100); //尾插法
int val = v.back();
cout << val << "被删除" << endl;
v.pop_back();
//指定位置删除
v.erase(v.begin());
//区间删除
v.erase(v.begin(),v.end());
v.clear();
//迭代器
vector<int>::iterator pStart = v.begin(); //拿到了指向第一个元素的迭代器
vector<int>::iterator pEnd = v.end(); //返回指向最后一个元素下一个位置
while (pStart != pEnd){
    cout << *pStart << " ";
    pStart++;
}
cout << endl;

//count统计容器中某个元素的个数
int n = count(v.begin(),v.end(),4);
cout << "n:" << n << endl;

vector<Teacher> v; //创建一个容器 指定里面放Teacher类型的数据
Teacher t1(1, 2), t2(3, 4), t3(5, 6);

v.push_back(t1);
v.push_back(t2);
v.push_back(t3);

vector<Teacher>::iterator pStart = v.begin(); //拿到指向第一元素的迭代器
vector<Teacher>::iterator pEnd = v.end();//指向最后一个元素下一个位置

while (pStart != pEnd){
    Teacher t = *pStart;
    cout << "ID:" << t.ID << " AGE:" << t.age << endl;
    pStart++;
}

猜你喜欢

转载自blog.csdn.net/mafucun1988/article/details/89597378