目录
学习语法,不必拘泥,重要的是要学会和理解。所有的一切,例如做题,学习、看书、各种行为都是手段,为着我们更好的运用。因为,最终都是为了更好的去理解某个东西,以便于更好的去改造这个世界。理解世界,而不是解释世界;改造世界,而不是跟从世界。
1、创建
2、遍历
a、下标方括号
b、迭代器
c、范围for(本质是替换为迭代器)
3、Capacity
1、reserve
2、resize
3、shrink_to_fit
4、[]和at区别:
vector - C++ Reference (cplusplus.com)https://legacy.cplusplus.com/reference/vector/vector/?kw=vector
1、创建
这个很简单,直接查文档
2、遍历
a、下标方括号
vector<int>v2(10,1);for (int i = 0; i <v2.size();++i ){cout << v2[i] << " ";}cout << endl;
b、迭代器
vector<int>v(10, 1);std::vector<int>::iterator it = v.begin();while (it != v.end()){cout << *it << " ";++it;}cout << endl;
c、范围for(本质是替换为迭代器)
vector<int>v(10, 1);for (auto e : v){cout << e <<" ";}cout << endl;
resize,开空间
3、Capacity
1、reserve
//改变容量vector<int>v(10, 1);v.reserve(100);cout << v.capacity() <<endl;
2、resize
//改变size大小vector<int>v(10, 1);v.resize(100);cout << v.capacity() <<endl;
3、shrink_to_fit
//改变size到合适的尺寸vector<int>v(10, 1);v.reserve(100);v.shrink_to_fit();cout << v.capacity() <<endl;
4、相关细节
前者越界检查是断言,后者是异常,普通数组是抽查
对于顺序表而言,尽量不要使用头插头删,效率极低
vector这里只有尾删尾插
insert:只提供迭代器区间
erase:也是只提供迭代器区间
算法库的find函数:
如果不存在找的值,返回的是传入迭代器的最后一个位置
这个位置,因为是数组,例如说10个元素,最后一个end是10,但是下标只有9
所以10实际上是一个不存在的区间
为什么要用算法库的fnd?
而strinig要自己的find?
因为string要找字串,算法库不支持
头插:在begin位置插入,迭代器是可以加的
为什么迭代器是左闭右开?
如果有右边不是开区间,就会遍历不到最后一个值
力扣的规定:
返回一维数组,返回数组的个数
返回二维数组,返回行数和每一列的个数