文章目錄
- 什么是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最大的噩夢