动态数组:
主要有 vector的初始化、插入、访问、大小和容量
和deque的插入和删除
#include<vector>
using namespace std;
int main(){
// 一 初始化
// 初始指定长度 为10
vector<int> a (10);
// 初始为 10 个 5
vector<int> b ( 10, 5);
// 复制
vector<int> c (b);
// 指定范围的 复制
vector<int> d ( c.begin(), c.begin() + 5);
// 初始化列表
vector<int> e { 1, 2, 3, 4}; // vector<int> e = { 1, 2, 3, 4};
}
#include<vector>
using namespace std;
int main(){
vector<int> a;
//二 插入元素
// 1 push_back() 在末尾插入数据
a.push_back( 1);
a.push_back( 2);
// 2 insert()
a.insert( a.begin(), 1); // 在开头插入1
a.insert( a.begin(), 5, 2); // 在开头插入 5 个 2
vector<int> b ( 2, 30);
a.insert( a.begin() + 1, b.begin(), b.end()); //在 位置1 插入 b 的全部元素
}
#include<vector>
#include<iostream>
using namespace std;
int main(){
//三 vector的访问方法
vector<int> a { 0, 1, 2, 3, 4};
// 1 下标法访问
for(int i = 0; i < a.size(); i++){
cout << a[i] << ' ';
}
cout << endl;
// 2 迭代器法
for(auto it = a.begin(); it != a.end(); it++){
cout << *it << ' ';
}
cout << endl;
// 3 at()
for(int i = 0; i < a.size(); i++){
cout << a.at( i) << ' ';
}
}
#include<vector>
#include<iostream>
using namespace std;
// 模板类输出函数
template <typename T>
void display(const vector<T>& a){
for(auto it = a.begin(); it != a.end(); it++){
cout << *it << ' ';
}
cout << endl;
}
int main(){
//四 vector的删除
vector<int> a { 0, 1, 2, 3, 4};
display( a);
// 用pop_back()删除末尾元素
cout << "pop_back() 删除末尾元素" << endl;
a.pop_back();
display( a);
}
#include<vector>
#include<iostream>
using namespace std;
int main(){
// 五 vector 的 大小和 容量
// 大小指vector的当前元素个数
// 容量指vector重新分配内存前能存储的最大元素个数
// 大小 <= 容量
vector<int> a { 0, 1, 2, 3, 4};
cout << "a.size() is ";
cout << a.size() << endl;
cout << "a.capacity() is ";
cout << a.capacity() << endl;
//插入 5 后
a.push_back(5);
cout << "插入新元素后" << endl;
cout << "a.size() is ";
cout << a.size() << endl;
cout << "a.capacity() is ";
cout << a.capacity() << endl;
}
#include<deque>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
// deque 可以在两端插入或删除
// 一 插入
deque<int> a;
//1 push_back()在末尾插入
a.push_back(3);
a.push_back(4);
//2 push_front()在开头插入
a.push_front(2);
a.push_front(1);
for(auto it = a.begin(); it != a.end(); it++){
cout << "a[" << distance( a.begin(), it) << "] is ";//distance() 计算偏移地址
cout << *it << endl;
}
//二 删除
//1 pop_back() 在末尾删除
a.pop_back();
//2 pop_front() 在开头删除
a.pop_front();
cout << "删除开头和末尾元素后" << endl;
for(auto it = a.begin(); it != a.end(); it++){
cout << "a[" << distance( a.begin(), it) << "] is ";//distance() 计算偏移地址
cout << *it << endl;
}
}