Обмен технологиями

Серия C-Вектор (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

🌈个人主页:Одноклассник Ючен 

💫个人格言:“成为自己未来的主人~”   

Введение и использование вектора

Введение в вектор

Когда тип параметра, созданный вектором, является типом char, он очень похож на строку, но между ними также есть различия. Например, для вектора.Он может учитывать другие типы, тогда как строка может относиться только к строкам., и после того, как мы подробно изучим строку, нам станет легче изучать другие вещи STL.

  1. Вектор — это контейнер последовательности, представляющий массив переменного размера.
  2. Как и массив, Vector также использует непрерывное пространство для хранения элементов, а это означает, что к элементам Vector можно получить доступ с помощью индексов. Он так же эффективен, как и массив, но, в отличие от массива, его размер можно изменять динамически. его размер будет автоматически обрабатываться контейнером.
  3. По сути, Vector использует динамически выделяемый массив для хранения своих элементов. Когда вставляется новый элемент, его число необходимо перераспределить, чтобы увеличить пространство для хранения. Подход заключается в том, чтобы выделить новый массив, а затем переместить все элементы в этот массив. С точки зрения времени это относительно затратная задача, поскольку каждый раз, когда в контейнер добавляется новый элемент, Vector не будет перераспределяться. каждый раз.
  4. Стратегия векторного выделения пространства: Vector выделит некоторое дополнительное пространство для возможного роста, поскольку пространство для хранения больше, чем фактическое необходимое пространство для хранения. Различные библиотеки используют разные стратегии для взвешивания использования и перераспределения пространства, но в любом случае перераспределение должно всегда осуществляться. иметь логарифмически возрастающий размер интервала, так что вставка элемента в конец выполняется за постоянное время.
  5. Таким образом, Vector занимает больше места для хранения, чтобы получить возможность эффективно управлять этим пространством и динамически его увеличивать.
  6. По сравнению с другими контейнерами динамических последовательностей Vector более эффективен при доступе к элементам. Добавление и удаление элементов в конце относительно эффективно, но менее эффективно для других операций удаления и вставки, которые не находятся в конце.

Использование вектора

функция push_back

  1. void test_vector1()
  2. {
  3. vector<double> v2;
  4. vector<int> v1;
  5. v1.push_back(1);
  6. v1.push_back(2);
  7. v1.push_back(3);
  8. v1.push_back(4);
  9. for (size_t i = 0; i < v1.size(); i++)
  10. {
  11. cout << v1[i] << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector1();
  18. return 0;
  19. }

На самом деле, о push_back говорить нечего. Он добавит символы после исходного пространства хранения вектора.

На самом деле в файле есть подробное описание. Если во время вставки недостаточно места, емкость будет автоматически расширена.

Что касается методов обхода функции Vector, то здесь мы также поговорим о различных методах:

  1. for (size_t i = 0; i < v1.size(); i++)
  2. {
  3. cout << v1[i] << " ";
  4. }
  5. cout << endl;
  6. for (size_t i = 0; i < v1.size(); i++)
  7. {
  8. cout << v1[i] << " ";
  9. }
  10. cout << endl;
  11. vector<int>::iterator it1 = v1.begin();
  12. while (it1 != v1.end())
  13. {
  14. cout << *it1 << " ";
  15. it1++;
  16. }
  17. cout << endl;
  18. for (auto e : v1)
  19. {
  20. cout << e << " ";
  21. }
  22. cout << endl;

Включая доступ к индексу [], итератор и диапазон, это по сути то же самое, что и строка, о которой мы говорили ранее.

  1. void test_vector2()
  2. {
  3. vector<string> v2;
  4. string s1("张三");
  5. v2.push_back(s1);
  6. v2.push_back(string("李四"));
  7. v2.push_back("王五");
  8. v2[1] += "来";
  9. for (const auto& e : v2)
  10. {
  11. cout << e << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector2();
  18. return 0;
  19. }

 

Что еще более удивительно в Vector, так это то, что его можно повторно использовать и применять к Vector другие элементы, такие как список, строку или даже другой вектор.

Если применяется строка, то каждый элемент таблицы последовательности представляет строку.