АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Вектор, содержащий объекты класса

Читайте также:
  1. IV. Определение массы вредных (органических и неорганических) веществ, сброшенных в составе сточных вод и поступивших иными способами в водные объекты
  2. IX. Снижение класса (подкласса) условий труда при применении работниками, занятыми на рабочих местах с вредными условиями труда, эффективных СИЗ
  3. Ассоциативный массив, содержащий объекты
  4. Берг С. Классический цигун для женщин. Полный курс за 10 уроков. – СПб. : Вектор, 2014. – 160 с. – (Здоровье на все 100)
  5. В) учетный документ, содержащий перечень документов дела с указанием их порядковых номеров, индексов, названий, дат, номеров листов
  6. ВОДНЫЕ ОБЪЕКТЫ. ОЦЕНКА ВОДНЫХ ОБЪЕКТОВ ДЛЯ ПЛЯЖНО-КУПАЛЬНОГО ОТДЫХА. МЕТЕОРОЛОГИЧЕСКИЕ УСЛОВИЯ КУПАНИЯ
  7. Воздействие опт-го изл-я на биологические объекты.
  8. Вопрос:Экологический мониторинг.Основные объекты.
  9. Доступность компонентов класса.
  10. Заражаемые объекты.
  11. Значение, задачи и объекты анализа себестоимости продукции

В предыдущих примерах вектор содержал объекты встроенных типов, однако класс vector обладает более широкими возможностями. Вектор может состоять из объектов любого типа, включая объекты классов, определенных программистом. Рассмотрим пример, в котором вектор хранит данные о температуре воздуха, измеренной в течение недели. Обратите внимание на то, что класс DailyTemp имеет конструктор по умолчанию, а также перегруженные версии операторов "<" и "==". Помните, что в зависимости от конкретной реализации библиотеки STL перегрузка операторов сравнения может быть необязательной.

 

// Вектор, содержащий объекты класса.

// Доступ к элементам вектора <: помощью итератора.

#include"stdafx.h"

#include <iostream>

#include <vector>

#include <windows.h>

#include <cctype>

using namespace std;

// Вектор, содержащий объекты класса.

class DailyTemp {

int temp;

public:

DailyTemp() { temp = 0; } //Первый конструктор,

DailyTemp(int x) { temp = x; } //Второй конструктор

DailyTemp &operator=(int x) {//фунция перегрузки оператора =

temp = x; return *this; //это значит, что если встретится

//оператор = то нужно выполнить тело данной функции

}

double get_temp() { return temp; } // функция, возвращает значение переменной temp

};

bool operator<(DailyTemp a, DailyTemp b) {//перегрузка оператора <

return a.get_temp() < b.get_temp();

}

bool operator==(DailyTemp a, DailyTemp b){//перегрузка оператора ==

return a.get_temp() == b.get_temp();

}

int main (){

vector<DailyTemp> v;

unsigned int i;

//запись в вектор случайных чисел

for(i=0; i<7; i++)

v.push_back(DailyTemp(60 + rand()%30));

SetConsoleOutputCP(1251);

cout << "Температура по Фаренгейту:\n";

//Вывод содержимого вектора

for(i=0; i<v.size(); i++)

cout << v[i].get_temp() << " ";

cout << endl;

// Преобразование шкалы Фаренгейта в шкалу Цельсия.

for(i=0; i<v.size(); i++)

v[i] = (v[i].get_temp()-32) * 5/9;

cout << "Температура в градусах:\n";

for(i=0; i<v.size(); i++)

cout << v[i].get_temp() <<" ";

system("pause");

return 0;

}

 

 

Ниже приводится примерный вывод этот программы.

 

Векторам присуща большая мощь, безопасность и гибкость, но, к сожалению, они менее эффективны, чем обычные массивы. Хотя, некоторых случаях преимущества класса vector перевешивают его недостатки.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)