Article directory
what is vector
Vector: It is a sequence table in a data structure, opening up a continuous space to store content.
The differences between vector and ordinary sequence list
1. Because it is written in C++, it contains templates, which can be customized Types, not just built-in types.
2. It provides exchange function
3. Auto was introduced in c++11 and you can use range for traversal< /span>
····
member functions of vector
operator=
Assignment operation
Because only one version is overloaded
vector type = vector type
If it is < /span>Other types will be converted implicitly
operator[]
[]: Subscript search
#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 and end and iterator
iterator: iterator, vector is defined usingtemplate pointer
begin:point a>The first element
end: points to the last oneElement
Usage:
#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(): Calculate the effective length
Usage:
#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: Check the capacity in the current sequence table
#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: Set capacity
If resize<size(), the capacity will be reduced and the data will be deleted
If resize is between size() and capacity(), then the capacity is reduced without deleting data
If resize>capacity(), then the capacity is expanded
empty
Check whether there is any content in the sequence table
#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: expansion
push_back
tail plug
#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
tail delete
#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
Insert at the specified position
You can insert one or more
because it overloads the iterator parameter to avoid fixing the type.
So what is passed is an iterator
#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
Delete the content at the specified position
The overload is also an iterator
so you need to pass the iterator
#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
Exchange, exchange everything with a vector type object
#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
Clear string content
#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;
}
Member variables
They are all iterators, I wrote this one myself
is not an official name
iterator _str;//首个元素的地址
iterator _size;//尾元素的地址
iterator _capacity;//容量
Summarize
is still different from the ordinary sequence list, and overall it is much easier to use.
dp’s biggest nightmare