C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 7 - Знакомимся с вектором / Библиотеки и функции / Visual C++

Шаг 7 - Знакомимся с вектором

Вектор (vector) напоминает нам массив, только он способен расти до произвольного размера, поддерживает информацию о размере. Как и массив к вектору можно обратить воспользовавшись операцией индексирования []. Вот характеристики:

  • Доступ к данных с одинаковой скоростью
  • Вставка приводит к перемещению элементов
  • При расширении данные копируються в другой блок

Как видите вектор оптимален для получения информации, но при большом количестве вставок лучше воспользоваться другими контейнерами, например, списками. Проблема в том, что физически вектор распологается в непрерывной памяти. На C это реализовывали функциями malloc.

Для работы с вектором необходимо подключить заголовочный файл:

#include "vector"

Объявить рабочую область:

using namespace std;

После этого вектор необходимо объявить, это можно сделать двумя способами.

vector< int > vArray1;
vector< int > vArray2(30);

В первом случае указывается пустой вектор, а во втором начальный размер.

Можно получать информацию о параметрах вектора:

  • size() - сколько данных храниться
  • capacity() - сколько может храниться до изменения размера
  • max_size() - максимальный размер обычно равен наиболее большому доступному блоку памяти

Смотрим пример:

// TestVector.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "vector"
#include "iostream.h"

using namespace std;

void main()
{
	vector vArray1;
	vector vArray2(30);
	cout << "Size Vector " << vArray2.size() << endl;
	cout << "Capacity Vector " << vArray2.capacity() << endl;
	cout << "Max_Size Vector " << vArray2.max_size()  << endl;
	for (int x=1;x<5;x++)
		vArray2.push_back(10); 
	cout << "Size Vector " << vArray2.size() << endl;
	cout << "Capacity Vector " << vArray2.capacity() << endl;
	cout << "Max_Size Vector " << vArray2.max_size()  << endl;
}

А вот результат:

Size Vector 30
Capacity Vector 30
Max_Size Vector 1073741823
Size Vector 34
Capacity Vector 60
Max_Size Vector 1073741823
Press any key to continue

Как видите Size показывает сколько сейчас лежит в векторе чисел. В то время как capacity возвращает инициализированный размер, то есть тот размер, до которого можно добавлять данные без инициализации. Вас не удивило, что размер доступной памяти не изменился ??? Это размер доступного блока, а не всей памяти поэтому он и не изменился.


Загрузить проект | | |
Автор Каев Артем.
[AD]