содержание
вводить
Вектор — это контейнер последовательности, который инкапсулирует массив с динамическим размером. Как и любой другой тип контейнера, он может содержать объекты различных типов. Можно просто считать, что вектор — это динамический массив, который может хранить любой тип.
В векторном контейнере время случайного доступа к элементу по индексу постоянно, и время добавления элемента в хвост тоже в большинстве случаев постоянно, что в целом быстро.
При вставке или удалении элементов в середине из-за того, что нужно переместить много элементов, скорость низкая, а среднее затрачиваемое время пропорционально количеству элементов в контейнере.
Общие функции
Функция члена | роль |
vector() | Конструктор без аргументов, инициализирует контейнер пустым |
vector(int n) | Инициализируйте контейнер, чтобы он содержал n элементов |
vector(int n, const T & val) | Предполагая, что элемент имеет тип T, этот конструктор инициализирует контейнер, чтобы иметь n элементов, каждый со значением val |
vector(iterator first, iterator last) | first и last могут быть итераторами для других контейнеров. Вообще говоря, результатом инициализации этого конструктора является изменение содержимого векторного контейнера в соответствии с диапазоном [first, last) в других контейнерах. |
void assign(int n,const T& x) | Установите значение n-го элемента в векторе на x |
void clear() | удалить все элементы |
bool empty() | Проверьте, пуст ли контейнер |
void pop_back() | удалить элемент в конце контейнера |
void push_back( const T & val) | добавить val в конец контейнера |
int size() | Возвращает количество элементов в контейнере |
Int capacity() | Размер текущего выделения вектора |
reference at(int pos) | Возвращает ссылку на элемент в позиции pos |
T & front() | Возвращает ссылку на первый элемент в контейнере |
T & back() | Возвращает ссылку на последний элемент в контейнере |
iterator begin() | Возвращает указатель на начало вектора, указывающий на первый элемент |
iterator end() | Возвращает указатель хвоста вектора, указывающий на позицию рядом с последним элементом вектора |
reverse_iterator rbegin() | Обратный итератор, указывающий на последний элемент |
reverse_iterator rend() | вернуть итератор на позицию перед первым элементом |
iterator insert(iterator i, const T & val) | вставляет val в позицию, на которую указывает итератор i, возвращая i |
iterator insert( iterator i, iterator first, iterator last) | вставляет элемент из интервала [first, last) в другой контейнер в позицию, на которую указывает итератор i |
iterator erase(iterator i) | Удалить элемент, на который указывает итератор i, возвращаемое значение — это итератор элементов после удаленного элемента |
iterator erase(iterator first, iterator last) | удалить диапазон [первый, последний) в контейнере |
void swap( vector <T> & v) | Поменять местами содержимое самого контейнера с другим контейнером v того же типа |
Экземпляр функции
1. Инициализировать вектор
(1) vector
(2) vector
(3) vector
(4) vector
(5) int b[7]={1,2,3,4,5,9,8};
vector
2. Траверс
#include <string>
#include <cctype>
using namespace std;
int main() {
vector<int> myVector(10, 22);
// Проходим по индексам.
for (auto i = 0; i < myVector.size(); i++)
{
cout << " " << myVector[i];
}
cout << "\n";
myVector.push_back(44);
//проходим через итератор
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
cout << "\n";
return 0;
}
3. Измените значение элемента
// list::sort
#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;
int main() {
vector<int> myVector(10, 22);
// Проходим по индексам.
for (auto i = 0; i < myVector.size(); i++)
{
myVector[i]=55;
}
cout << "\n";
// Проходим по индексам.
for (auto i = 0; i < myVector.size(); i++)
{
cout << " " << myVector[i];
}
cout << "\n";
myVector.push_back(44);
// Измените значение элемента, пройдя итератор.
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
if (*i == 55)
{
*i = 33;
}
}
cout << "\n";
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
return 0;
}
4. Удалить элементы
#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;
int main() {
vector<int> myVector = {1,2,3,4,5,6,7,8,9,11};
//Удалить по нижнему индексу.
for (auto i = 0; i < myVector.size(); i++)
{
if (i == 4)
{
myVector.erase(myVector.begin()+4);
}
}
cout << "\n";
// Перебираем итератор для удаления.
for (auto i = myVector.begin(); i != myVector.end();)
{
if (*i == 7)
{
i=myVector.erase(i);
}
else
{
i++;
}
}
cout << "\n";
for (auto i = myVector.begin(); i != myVector.end();i++)
{
cout << " " << *i;
}
cout << "\n";
return 0;
}
5. Сортировка
// list::sort
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compar(int a, int b)
{
return a > b;
}
int main() {
vector<int> myVector = { 1,2,4,3,5,6,7,8,9,11 };
sort(myVector.begin(), myVector.end());
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
cout << "\n";
sort(myVector.begin(), myVector.end(),compar);
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
cout << "\n";
return 0;
}