C++STL-动态数组Vector

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/Richard__Ting/article/details/87955590