STL container vector in C++

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
Insert image description here
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
Insert image description here

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
Insert image description here

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

Guess you like

Origin blog.csdn.net/dabai__a/article/details/134901856