文章目录
- 什么是vector
- vector与普通顺序表不同的点
- vector的成员函数
- operator=
- operator[]
- begin与end与iterator
- size()
- capacity
- resize
- empty
- reserve
- push_back
- pop_back
- insert
- erase
- swap
- clear
- 成员变量
- 总结
什么是vector
vector:是数据结构里面的顺序表,开辟一段连续的空间存储内容
vector与普通顺序表不同的点
1、因为是用c++写的,里面包含了模版,可以是自定义类型,不止内置类型。
2、自身提供了交换函数
3、c++11中引入了auto 可以使用范围for遍历
····
vector的成员函数
operator=
赋值操作
因为只重载了一个版本
vector类型=vector类型
如果其是其他类型会隐式类型转化
operator[]
[]:下标查找
#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);//arr.resize(2);arr.reserve(100);cout << arr[1]<< endl;return 0;
}
begin与end与iterator
iterator:迭代器,vector中是用模版指针定义的
begin:指向第一个元素
end:指向最后一个元素
使用方式:
#include <iostream>
#include <vector>int main ()
{std::vector<int> myvector;for (int i=1; i<=5; i++) myvector.push_back(i);std::cout << "myvector contains:";for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0;
}
size()
size():计算有效长度为多少
使用方式:
#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);cout << arr.size() << endl;return 0;
}
capacity
capacity:查当前顺序表中的容量
#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);cout << arr.capacity() << endl;return 0;
}
resize
resize:设置容量
如果resize<size()那么会缩容,并且吧数据删掉
如果resize在size()和capacity()之间那么也是缩容,不删数据
如果resize>capacity()那么就是扩容
empty
检查顺序表中有没有内容
#include <iostream>
#include <vector>int main ()
{std::vector<int> myvector;int sum (0);for (int i=1;i<=10;i++) myvector.push_back(i);while (!myvector.empty()){sum += myvector.back();myvector.pop_back();}std::cout << "total: " << sum << '\n';return 0;
}
reserve
reserve:扩容
push_back
尾插
#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);//arr.resize(2);arr.reserve(100);cout << arr[1]<< endl;return 0;
}
pop_back
尾删
#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();//arr.resize(2);//arr.reserve(100);cout << arr.size()<< endl;return 0;
}
insert
指定位置插入
可以插入一个,也可以多个
因为他重载的是迭代器参数,避免了定死了类型
所以要传的是迭代器
#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();arr.insert(arr.begin()+2, 30);//arr.resize(2);//arr.reserve(100);cout << arr.size()<< endl;return 0;
}
erase
删除指定位置的内容
重载的同样是迭代器
所以要传迭代器
#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();arr.insert(arr.begin()+2, 30);arr.erase(arr.begin() + 2);//arr.resize(2);//arr.reserve(100);cout << arr.size()<< endl;return 0;
}
swap
交换,跟vector类型的对象 交换所有东西
#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;vector<int> s;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();arr.insert(arr.begin()+2, 30);arr.erase(arr.begin() + 2);//arr.resize(2);//arr.reserve(100);s.swap(arr);cout << arr.size()<< endl;cout << s.size() << endl;return 0;
}
clear
清除字符串内容
#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;vector<int> s;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.insert(arr.begin()+2, 30);arr.erase(arr.begin() + 2);//arr.resize(2);//arr.reserve(100);s.swap(arr);cout << arr.size()<< endl;cout << s.size() << endl;s.clear();cout << s.size() << endl;return 0;
}
成员变量
都是迭代器,我这个是自己写的
并不是官方的名字
iterator _str;//首个元素的地址iterator _size;//尾元素的地址iterator _capacity;//容量
总结
跟普通的顺序表还是有区别的,总体变的好用了很多。
dp最大的噩梦