Читаем Программирование полностью

                  // со значением 5.6

                  // теперь вектор v содержит два элемента

                  // и v[1]==5.6

v.push_back(7.9); // добавляем в конец вектора v элемент

                  // со значением 7.9

                  // теперь вектор v содержит три элемента

                  // и v[2]==7.9

Обратите внимание на синтаксис вызова функции push_back(). Он называется вызовом функции-члена; функция push_back() является функцией-членом объекта типа vector, и поэтому для ее вызова используется особая форма вызова.

вызов функции-члена:

имя_объекта.имя_функции_члена(список_аргументов)

Размер вектора можно определить, вызвав другую функцию-член объекта типа vector: size(). В начальный момент значение v.size() равно 0, а после третьего вызова функции push_back() значение v.size() равно 3. Зная размер вектора, легко выполнить цикл по всем элементам вектора. Рассмотрим пример.

for(int i=0; i

  cout << "v[" << i << "]==" << v[i] << '\n';

Этот цикл выводит на экран следующие строки:

v[0]==2.7

v[1]==5.6

v[2]==7.9

Если вы имеете опыт программирования, то можете заметить, что тип vector похож на массив в языке С и других языках. Однако вам нет необходимости заранее указывать размер (длину) вектора, и вы можете добавлять в него элементы по мере необходимости. В дальнейшем мы убедимся, что тип vector из стандартной библиотеки С++ обладает и другими полезными свойствами.

<p id="AutBody_Root059"><strong>4.6.2. Числовой пример</strong></p>

Рассмотрим более реалистичный пример. Часто нам требуется считать коллекцию данных в программу и что-то с ними сделать. Это “что-то” может означать построение графика, вычисление среднего и медианы, сортировку, смешивание с другими данными, поиск интересующих нас значений, сравнение с другими данными и т.п. Перечислять операции с данными можно бесконечно, но сначала данные необходимо считать в память компьютера. Рассмотрим основной способ ввода неизвестного — возможно, большого — объема данных. В качестве конкретного примера попробуем считать числа с плавающей точкой, представляющие собой значения температуры.

// считываем значения температуры в вектор

int main()

{

  vector temps;    // значения температуры

  double temp;

  while (cin>>temp)        // считываем

    temps.push_back(temp); // записываем в вектор

  // ...что-то делаем...

}

Итак, что происходит в этом фрагменте программы? Сначала мы объявляем вектор для хранения данных и переменную, в которую будет считываться каждое следующее входное значение.

vector temps; // значения температуры

double temp;

Вот где указывается тип входных данных. Как видим, мы считываем и храним числа типа double.

Теперь выполняется цикл считывания.

while (cin>>temp)        // считываем

  temps.push_back(temp); // записываем в вектор

Инструкция cin>>temp считывает число типа double, а затем это число “заталкивается” в вектор (записывается в конец вектора). Эти операции уже были продемонстрированы выше. Новизна здесь заключается в том, что в качестве условия выхода из цикла while мы используем операцию ввода cin>>temp. В основном условие cin>>temp является истинным, если значение считано корректно, в противном случае оно является ложным. Таким образом, в цикле while считываются все числа типа double, пока на вход не поступит нечто иное. Например, если мы подадим на вход следующие данные

1.2 3.4 5.6 7.8 9.0 |

то в вектор temps будут занесены пять элементов: 1.2, 3.4, 5.6, 7.8, 9.0 (именно в таком порядке, т.е. temps[0]==1.2). Для прекращения ввода используется символ |, т.е. значение, не имеющее тип double. В разделе 10.6 мы обсудим способы прекращения ввода и способы обработки ошибок ввода.

Записав данные в вектор, мы можем легко манипулировать ими. В качестве примера вычислим среднее и медиану значений температур.

// вычисляем среднее и медиану значений температур

int main()

{

  vector temps; // значения температур

  double temp;

  while (cin>>temp) // считываем данные

    temps.push_back(temp); // заносим их в вектор

                           // вычисляем среднюю температуру:

  double sum = 0;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных