Просмотр источника
Вектор - это динамический массив (размеры могут изменяться во время выполнения) Вектор полезен для параллельной сортировки нескольких массивов Например, сортировка с номерами (вектор неограниченной длины, пары добавляем в конец вектора) {code:title=part.cpp|borderStyle=solid} 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()); {code} или сортировка пар вектор фиксированной после ввода длины, пары добавляем по номеру {code:title=part.cpp|borderStyle=solid} 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()); {code} Массив пар сортируется по возрастанию первого числа а в случае равенства первого - по возрастанию второго В случае, когда гарантируется, что все первые различны второй массив просто параллельно передвигается, фактически никогда не участвуя в сравнениях В вектор можно запихнуть и четвёрки чисел, а потом отсортировать параллельно 4 массива: {code:title=part.cpp|borderStyle=solid} 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() - размер вектора (количество элементов в векторе) {code} Для обращения к первому элементу вектора используем суффикс .first ко второму - .second первый элемент первой пары вектора v\[i\] v\[i\].first.first цикл обработки вектора из двух пар (четвёрки чисел) {code:title=part.cpp|borderStyle=solid} 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; } {code} binary_search(v.begin(),v.end(),i) - двоичный поиск числа i в векторе v; \\ {code:title=primer.cpp|borderStyle=solid} #include <bits/stdc++.h> using namespace std; int main() { vector<int> a; // создали пустой вектор типа int a.reserve(10); // зарезервировали память под 10 элементов типа int vector<int> b(10); // создали пустой вектор типа int // зарезервировали память под 10 элементов типа int // прописали их нулями for(unsigned int i=0; i<b.size(); i++) // обработка вектора по его размеру cout << b[i] << ' '; vector<int> c(b); // копирование вектора (c=b) for(unsigned int i=0; i<c.size(); i++) // обработка вектора по его размеру cout << c[i] << ' '; if (c == b) cout << "c=b" << endl; // проверка векторов на равенство } {code}\\ \\ \\ |