Программирование. Принципы и практика использования C++ Исправленное издание, стр. 55
вызов функции-члена:имя_объекта.имя_функции_члена(список_аргументов)Размер вектора можно определить, вызвав другую функцию-член объекта типа
vector: size()v.size()push_back()v.size()3for(int i=0; i<v.size(); ++i) cout << "v[" << i << "]==" << v[i] << '\n';Этот цикл выводит на экран следующие строки:
v[0]==2.7v[1]==5.6v[2]==7.9Если вы имеете опыт программирования, то можете заметить, что тип
vectorvector4.6.2. Числовой пример
Рассмотрим более реалистичный пример. Часто нам требуется считать коллекцию данных в программу и что-то с ними сделать. Это “что-то” может означать построение графика, вычисление среднего и медианы, сортировку, смешивание с другими данными, поиск интересующих нас значений, сравнение с другими данными и т.п. Перечислять операции с данными можно бесконечно, но сначала данные необходимо считать в память компьютера. Рассмотрим основной способ ввода неизвестного — возможно, большого — объема данных. В качестве конкретного примера попробуем считать числа с плавающей точкой, представляющие собой значения температуры.
// считываем значения температуры в векторint main(){ vector<double> temps; // значения температуры double temp; while (cin>>temp) // считываем temps.push_back(temp); // записываем в вектор // ...что-то делаем...}Итак, что происходит в этом фрагменте программы? Сначала мы объявляем вектор для хранения данных и переменную, в которую будет считываться каждое следующее входное значение.
vector<double> temps; // значения температурыdouble temp;Вот где указывается тип входных данных. Как видим, мы считываем и храним числа типа
doubleТеперь выполняется цикл считывания.
while (cin>>temp) // считываем temps.push_back(temp); // записываем в векторИнструкция
cin>>tempdoublewhilecin>>tempcin>>tempwhiledouble1.2 3.4 5.6 7.8 9.0 |то в вектор
temps1.23.45.67.89.0temps[0]==1.2|doubleЗаписав данные в вектор, мы можем легко манипулировать ими. В качестве примера вычислим среднее и медиану значений температур.
// вычисляем среднее и медиану значений температурint main(){ vector<double> temps; // значения температур double temp; while (cin>>temp) // считываем данные temps.push_back(temp); // заносим их в вектор // вычисляем среднюю температуру: double sum = 0; for (int i = 0; i < temps.size(); ++i) sum += temps[i]; cout << "Average temperature: " << sum/temps.size() << endl; // вычисляем медиану температуры: sort(temps.begin(),temps.end()); // сортируем значения // температуры // "от начала до конца" cout << "Медиана температуры: " << temps[temps.size()/2] << endl;}Мы вычисляем среднее значение, просто суммируя все элементы и деля сумму на количество элементов (т.е. на значение
temps.size()// вычисляем среднюю температуру :double sum = 0;