版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Richard__Ting/article/details/87955590
C++STL-动态数组Vector
Vector的基本使用
1.定义动态数组
#include <iostream>
#include <vector>
using namespace std;
int main(){
//定义方法1:直接开辟10个单元的动态数组,初始化0
vector<int> v1(10);
//定义方法2:开辟8个单元的动态数组,初始化0
vector<int> v2;
v2.resize(8);
//定义方法3:开辟5个单元的动态数组,初始化5
vector<int> v3(5,3);
//注意不要越界,输出
cout << v1.size() << ' ' << v1[9] << endl; //v1的最后一个数,10 0
cout << v2.size() << ' ' << v2[7] << endl; //v2的最后一个数,8 0
cout << v3.size() << ' ' << v3[4] << endl; //v3的最后一个数,5 3
return 0;
}
2.动态数组的长度
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> v1;
cout << v1.size() << endl;//显示0
return 0;
}
3.动态数组的添加
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;//确定数组大小
cin >> n;
vector<int> s;//定义动态数组
//输入动态数组的值
for(int i = 0; i < n; ++i){
int tmp;
cin >> tmp;
s.push_back(tmp);//**用于动态数组元素的添加
}
//输出动态数组的值
for(int i = 0; i < n; ++i){
cout << s[i] << endl;
}
return 0;
}
示例:
5
1 2 3 4 5
1
2
3
4
5
4.动态数组的访问
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> s(7,6);//定义动态数组,初始化为6
//方法一:直接访问下标
cout << s[5] << '\n' << endl;
//方法二:迭代器访问
for(vector<int>::iterator i = s.begin(); i != s.end(); i++){
cout << *i << " ";
}
return 0;
}
⚠️注意点:
1. s.begin()与s.end()均为指针,分别指向容器的第一个元素和最后一个元素;
2. 在C11标准中,vector<int>::iterator等价于auto。
5.动态数组的清空
- clear() 只清空了元素,未清空占用资源。
- 利用
vector<int> ().swap(m)
加以清空。
#include <iostream>
#include <vector>
using namespace std;
int main(){
cout << "===分界线:测试动态数组m===" << endl;
vector<int> m;
for(int i = 0; i < 7; i++){
m.push_back(i);
}
cout << "原始数组:" << endl;
cout << "size: " << m.size() << endl;
cout << "capacity: " << m.capacity() << endl;
cout << "方式一:利用 clear() 清空元素后数组。" << endl;
m.clear();
cout << "size: " << m.size() << endl;
cout << "capacity: " << m.capacity() << endl;
cout << "方式二:利用 swap() 清空元素后数组。" << endl;
vector<int> ().swap(m);
cout << "size: " << m.size() << endl;
cout << "capacity: " << m.capacity() << endl;
return 0;
}