1, vector container
1.vector introduction
Vector container is a dynamic array provided in the form of class template. Similar to array, the elements of vector are also stored in continuous space, which supports subscript access to elements. Different from array, the size of vector container can be changed dynamically, and the storage space and allocation are completed by the container itself.
2. Define initialization
Header file < vector > to be imported
vector<int> v1; //Define an empty vevtor of type int vector<char> v2; //Define an empty vector of type char vector<ClassName>; //Define an empty vector of xxx class vector<int> v3(10) // Define a vector containing 10 int elements vector<int> v4(10,1) //Define a vector containing 10 int elements with an initial value of 1
string str[] = {"KB","LB","JB"}; vector<string> v1(str,str+2); //Define a vector that contains two string elements vector<string> v2(v1); //Vector can be assigned directly with object
3. Common functions of vector
vector<int> v1; //Define an empty vector of type int v1.begin(); // Returns a pointer to the vector header element v1.end(); // Returns a pointer to the tail element of the vector v1.rbegin(); // Points to the last element in the vector v1.rend(); //Points to the first element in the vector v1.push_back(1); //Add to end vector<int>::iterator it = v1.begin();//Iterator and points to the first element for (; it < v1.end(); it++) //Traversing container elements cout << *it << endl; v1.pop_back(); //Delete last element v1.clear(); //Empty vector v1.at(0); //Similar to array subscript access v1.size(); //Get how many elements are there in the vector v1.empty(); //Judge whether the vector is empty v1.assign(1, 3); //Modify the first element in the vector to 3
4. Traversal vector
Iterates through the entire vector
vector<int>::iterator it = v1.begin();//Iterator and points to the first element for (; it < v1.end(); it++) //Traversing container elements cout << *it << endl;
2, std::array container
1. Introduction to STD:: array
std::array was introduced in C++11. Compared with the built-in array, array is a safer and easier to use array type. Similar to the built-in array, the size of the array object is fixed. Therefore, array does not support adding and deleting elements and changing the size of containers. In addition to the traditional array supporting random access, high efficiency, fixed storage size and other characteristics, it also supports advanced functions such as iterator access, obtaining capacity, obtaining original pointer and so on.
2. Define initialization
Header file < array > to be imported
array<int , 5> a1; //Define an array with a length of 5, but no initialization value is random array<int, 5> a2 = { 1,2,3,4,5 }; //Define an array with a length of 5 and initialize it array<int, 5> a3(a2); //array can also pass objects to vectors
3.array common functions
array<int, 5> a2 = { 1,2,3,4,5 }; //Define an array with a length of 5 and initialize it a2.begin(); //First element in array a2.end(); //Last element in array a2.data(); //Return to first address a2.empty(); //Determine whether the array has elements a2.at(0); //Similar array access
4. Traverse array
for (int i = 0; i < a2.size(); i++) cout << a2.at(i);
3, list container
1.list introduction
The list container is a generalization of the two-way linked list. It is a linear sequence formed by connecting the elements stored in different locations through pointers. Each node of the two-way linked list has pointers to the front and back nodes respectively, so it is very convenient to traverse the container forward and backward in the list
2. Definition and initialization
Header file < list > to be imported
list<int> list1; //Create a list object of type int list<int> list2(5); //Create a list with five int elements list<int>list3(3,2); //Create a list with 3 elements, and the element is 2 list<int>list4(lst2); //You can also assign values by passing objects
3.list common functions
list1.back() //Returns the last element list1.begin() //Returns an iterator that points to the first element list1.clear() //Delete all elements list1.empty() //Returns true if the list is empty list1.end() //Returns the iterator at the end list1.erase() //Delete an element list1.front() //Returns the first element list1.pop_back() //Delete last element list1.pop_front() //Delete the first element list1.push_back() //Add an element at the end of the list list1.push_front() //Add an element to the head of the list list1.rbegin() //Returns the inverse iterator pointing to the first element list1.remove() //Delete element from list list1.remove_if() //Delete elements according to specified conditions list1.size() //Returns the number of elements in the list list1.sort() //Sort list list1.unique() //Delete duplicate elements in the list
4. Traverse the list
list<int>::iterator it = list1.begin(); for (it = list1.begin(); it != list1.end(); it++) cout << *it << endl;
4, Differences among vector, array and list
1. Difference between vector and array
Similarities:
(1) , vector and array memory are continuous
(2) , vector and array are similar to arrays and can be accessed using subscripts
(3) , vector and array have high security to avoid crossing the boundary
difference:
(1) The storage space of and vector is dynamic, but the storage space of array is fixed
(2) The data of and vector exist in the heap area, while the data of array exist in the stack area
(3) , vector can be inserted dynamically, but array cannot
2. Difference between vector and list
(1) The memory space of and vector is continuous, while the memory space of list is discontinuous
(2) vector can be accessed randomly, while list has low efficiency of random access
(3) If the memory of vector is not enough, it will actively open up new space, but the list does not need it, so the overhead of the list will be relatively small
(4) When inserting or deleting an element into a vector, you need to copy and move all the elements on the right of the element to be inserted; Therefore, it is more appropriate to use list when there are frequent insert and delete operations.