Рабочий стол > DL Руководство пользователя > Вектор С++ > Information > Сравнить страницу
Вектор С++ Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Ключ
Эти линии были удалены. Это слово было удалено.
Эти линии были добавлены. Это слово было добавлено.

Просмотр истории страницы


Есть 14 изменений. Просмотреть первое изменение .

 Вектор - это динамический массив (размеры могут изменяться во время выполнения)
  
 Вектор полезен для параллельной сортировки нескольких массивов
  
 Например, сортировка с номерами
 (вектор неограниченной длины, пары добавляем в конец вектора)
  
 {quote} vector<pair<int, int> > v;
  {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());{quote}
  {
  cin >> h[i] ;
  v.push_back(make_pair(h[i],i));
  }
  sort(v.begin(), v.end());{code}
  
  
 или сортировка пар
 вектор фиксированной после ввода длины, пары добавляем по номеру
 
 {quote} int N, D;
  {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());{quote}
  sort(A.begin(), A.end());{code}
  
  Массив пар сортируется по возрастанию первого числа
  а в случае равенства первого - по возрастанию второго
  В случае, когда гарантируется, что все первые различны
  второй массив просто параллельно передвигается,
  фактически никогда не участвуя в сравнениях
  
  
 В вектор можно запихнуть и четвёрки чисел,
 а потом отсортировать параллельно 4 массива:
{code:title=part.cpp|borderStyle=solid}
  vector<pair< pair<int,int> , pair<int,int> > > v;
  
{quote}vector<pair< pair<int,int> , pair<int,int> > > v;{quote}
  
{quote} int N,i,x1,y1,x2,y2;
  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());{quote}
  {
  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() - размер вектора (количество элементов в векторе)
  v.size() - размер вектора (количество элементов в векторе){code}
  
 Для обращения
 к первому элементу вектора используем суффикс .first
 ко второму - .second
 первый элемент первой пары вектора v[i]
{quote} v[i].first.first {quote}
  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}
  
{quote} 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; }{quote}
  
binary_search(v.begin(),v.end(),i) - двоичный поиск числа i в векторе v;
  
 {quote}binary_search(v.begin(),v.end(),i) - двоичный поиск числа i в векторе v; {quote}
 {code:title=primer.cpp|borderStyle=solid}
 #include <bits/stdc++.h>
  {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}\\
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами