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

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

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


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

 Вектор - это динамический массив (размеры могут изменяться во время выполнения)
  
 Вектор полезен для параллельной сортировки нескольких массивов
  
 Например, сортировка с номерами
 (вектор неограниченной длины, пары добавляем в конец вектора)
 {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;\\
  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}\\
 \\
 \\
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами