Вектор - это динамический массив (размеры могут изменяться во время выполнения)
Вектор полезен для параллельной сортировки нескольких массивов
Например, сортировка с номерами
(вектор неограниченной длины, пары добавляем в конец вектора)
vector<pair<int, int> > v;
int n,i;
cin >> n;
int h[n];
for(i = 0; i < n; i++)
{
cin >> h[i] ;
v.push_back(make_pair(h[i],i));
}
sort(v.begin(), v.end());
или сортировка пар
вектор фиксированной после ввода длины, пары добавляем по номеру
int N, D;
cin >> N >> D;
vector<pair<int, int> > A(N);
for(int i = 0; i < N; i++)
cin >> A[i].first >> A[i].second;
sort(A.begin(), A.end());
Массив пар сортируется по возрастанию первого числа
а в случае равенства первого - по возрастанию второго
В случае, когда гарантируется, что все первые различны
второй массив просто параллельно передвигается,
фактически никогда не участвуя в сравнениях
В вектор можно запихнуть и четвёрки чисел,
а потом отсортировать параллельно 4 массива:
vector<pair< pair<int,int> , pair<int,int> > > v;
int N,i,x1,y1,x2,y2;
cin >> N ;
for (i=0; i<N; i++)
{
cin >> x1 >> y1 >> x2 >> y2 ;
v.push_back(make_pair(make_pair(x1,y1),make_pair(x2,y2)));
}
sort(v.begin(),v.end());
v.size() - размер вектора (количество элементов в векторе)
Для обращения
к первому элементу вектора используем суффикс .first
ко второму - .second
первый элемент первой пары вектора v[i]
v[i].first.first
цикл обработки вектора из двух пар (четвёрки чисел)
for (int i=0; i<v.size(); i++)
{
int x1,y1,x2,y2;
x1=v[i].first.first;
y1=v[i].first.second;
x2=v[i].second.first;
y2=v[i].second.second;
if (x0>x1 && x0<x2 && y0>y1 && y0<y2) return true;
}
binary_search(v.begin(),v.end(),i) - двоичный поиск числа i в векторе v;
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> a; a.reserve(10);
vector<int> b(10); for(unsigned int i=0; i<b.size(); i++) cout << b[i] << ' ';
vector<int> c(b); for(unsigned int i=0; i<c.size(); i++) cout << c[i] << ' ';
if (c == b) cout << "c=b" << endl; }