Вектор в языке C++ - это абстрактная модель с рядом определенных функций, позволяющих совершать различные действия, в том числе имитировать работу динамического массива.
Что бы использовать вектора в программе, необходимо подключить заголовочный файл <vector>. Его объявление выглядит следующим образом
1 |
vector<int> myV (15); |
В этой строке <int> означает тип элементов в векторе. Все элементы вектора должны принадлежать одному типу. Число 15 означает, что в векторе задается память на 15 элементов, при этом они инициализируются. Возможна и другая запись
1 2 |
vector<int> myV; myV.reserve(15); |
В ней выделяется память на 15 элементов уже без инициализации.
Работать с вектором можно как с массивом, так и с объектом. Для вектора как объекта функции таковы:
- myV.swap(myV2) - меняет содержимое векторов местами,
- myV.begin() - указатель на начало вектора,
- myV.end() - указатель на конец вектора,
- myV.rbegin() - реверсивный указатель на конец вектора,
- myV.rend() - реверсивный указатель на начало вектора,
- myV.clear() - очистка вектора.
Вектор также примечателен тем, что при добавлении в него элементов больше, чем изначально задано, он изменяет свой размер и резервирует дополнительную память. Функций для такой работы с памятью вектора немного:
- myV.size() - размер вектора,
- myV.max_size() - максимальный размер вектора,
- myV.reserve(n) - установить минимальный размер выделенной памяти на вектор,
- myV.resize(n) - установить размер n для вектора,
- myV.capacity() - количество свободной памяти, выделенной под вектор.
В целом, он служит неплохой альтернативой массивам, позволяя более удобно и быстро работать.
Ну и основные функции, для работы с отдельными элементами вектора:
- myV.push_back(e) - добавить в конец элемент,
- myV.pop_back() - удалить последний элемент,
- myV.front() - первый элемент вектора,
- myV.back() - последний элемент вектора,
- myV.insert(i, e) - вставка элемента в позицию i,
- myV.erase(myV2) - удаляет последовательность элементов,
- myV[i] или myV.at(i) - доступ к элементу i вектора.
Примеры использования этих функций:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <vector> // подключаем vector #include <string> // подключаем строки string #include <iostream> // подключаем cout using namespace std; // чтобы не писать std:: int main() { vector <string> V; // инициализация vector V.push_back("January"); V.push_back("March"); V.push_back("April"); V.insert(V.begin()+1,"February"); V.push_back("May"); V.pop_back(); cout<<V.size()<<'\n'; // будет выведено 4 cout<<V.max_size()<<'\n'; cout<<*(V.begin())<<'\n'; // January cout<<*(V.end())<<'\n'; // NULL cout<<*(V.rbegin())<<'\n'; // April cout<<V.back()<<'\n'; // April cout<<V.front()<<'\n'; // January V.erase(V.begin()+1); cout<<V[1]<<'\n'; // March V.clear(); cout<<V.size()<<'\n'; // 0 cin.get(); // ожидаем нажатие пользователем клавиши return 0; // выдаём 0 - правило хорошего тона } |
Нашёл максимальный элемент в векторе и не пойму как вставить его в конец, вот код программы:
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
void DisplayVector(const vector& vecInput){
for (auto iElement = vecInput.cbegin(); iElement != vecInput.cend(); ++iElement)
cout << *iElement << ' ';
cout << endl;
}
int main(){
vector vecIntegers;
vecIntegers.push_back (1234);
vecIntegers.push_back (53);
vecIntegers.push_back (2453);
vecIntegers.push_back (346);
vecIntegers.push_back (876);
DisplayVector(vecIntegers);
cout << "Print the maximum element on the screen: ";
cout << *max_element (vecIntegers.cbegin (), vecIntegers.cend ()) << endl;
return 0;
}
помогите пожалуйста просто надо вставить максимальный элемент в конец вектора
Как-то так можно:
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
void DisplayVector(const vector<int>& vecInput) {
for (int i = 0; i < vecInput.size(); i++)
cout << vecInput[i] << ' ';
cout << endl;
}
int main() {
vector<int> vecIntegers;
vecIntegers.push_back (1234);
vecIntegers.push_back (53);
vecIntegers.push_back (2453);
vecIntegers.push_back (346);
vecIntegers.push_back (876);
DisplayVector(vecIntegers);
cout << "Print the maximum element on the screen: ";
cout << *max_element (vecIntegers.begin (), vecIntegers.end ()) << endl;
vecIntegers.push_back (*max_element (vecIntegers.begin (), vecIntegers.end ()));
DisplayVector(vecIntegers);
return 0;
}