STL主要包括这三个部分
然后第一节这边就简单教了一下通过迭代器来遍历输出数的两种方法,一个while,一个for
while (v != array1.end())
{
cout << *v << endl;
v++;
}
for (vector::iterator It = array1.begin(); It != array1.end(); It++)
{
cout << *v << endl;
}
初始化vector的几种方法
vectorv1(10); vector v2(10, 2); vector v3(v1); vector v4(v2.begin(), v2.end()); vector v5(v1.begin(), v1.begin() + 4); int hello[10] = { 1,2,3,4,5,6,7 }; vector v6(hello, hello + 2);
vector的一些内置函数,然后这边要着重区分一下reverse和resize这两个。
1、resize(n)
调整容器的长度大小,使其能容纳n个元素。
如果n小于容器的当前的size,则删除多出来的元素。
否则,添加采用值初始化的元素。
2、 resize(n,t)
多一个参数t,将所有新添加的元素初始化为t。
而reserver()的用法只有一种
reserve(n)
预分配n个元素的存储空间。
vectorv7, v8; v7.assign(v1.begin(), v1.begin() + 4);//将一个容器数据复制给另一个容器 v8.assign(7, 4); //auto &TMP = v8.front(); int &tmp = v8.front(); v8.push_back(111);//末尾填充数 int &TMP2 = v8.back(); int &tmp4 = v8[3]; v8.clear(); if (v8.empty()) { cout << "空"; } v8.assign(v1.begin(), v1.begin() + 114);//复制的范围 v8.pop_back();//删除最后一个元素 v8.erase(v8.begin(), v8.begin() + 2);//指定删除范围 v8.push_back(1111); v8.insert(v8.begin() + 1,12);//注意这里是插入 int num1 = v8.size();//实际大小 int num2= v8.capacity();//预分配空间 v8.resize(100);//填充 v8.resize(70, 123); v8.resize(100); v8.reserve(60);//预分配扩容 v8.swap(v5);//整块内存直接交换
几种vector的访问方式
for (vector::iterator it=a1.begin(); it != a1.end(); it++) { cout << *it; } //访问方式2 for (int i = 0; i < a1.size(); i++) { cout << a1[i] << endl; } //访问方式3 for (auto &tmp : a1) { cout << tmp << endl; }
vector的几个算法
sort排序是从小到大
sort(a1.begin(), a1.end());
reverse倒置,但补排序
reverse(a1.begin(), a1.end());
复制copy,但要提前开辟空间
vectorb1; copy(a1.begin(), a1.end(),b1.begin());
查找find
auto pos = find(a1.begin(), a1.end(), 4);
---
string本质上是个容器



