Чтение онлайн

на главную - закладки

Жанры

Освой самостоятельно С++ за 21 день.

Либерти Джесс

Шрифт:

Листинг 13.8. Создание вектора и обеспечение доступа к его элементам

1: #include <iostream>

2: #include <string>

3: #include <vector>

4: using namespace std;

5:

6: class Student

7: {

8: public:

9: Student;

10: Student(const string& name, const int аде);

11: Student(const Student& rhs);

12: ~Student;

13:

14: void SetName(const string& name);

15: string GetName const;

16: void SetAge(const int age);

17: int GetAge const;

18:

19: Student& operator=(const Student& rhs);

20:

21: private:

22: string itsName;

23: int itsAge;

24: };

25:

26: Student::Student

27: : itsName("New Student"), itsAge(16)

28: { }

29:

30: Student::Student(const string& name, const int agе)

31: : itsName(name), itsAge(age)

32: { }

33:

34: Student::Student(const Student& rhs)

35: : itsName(rhs.GetName), itsAge(rhs.GetAge)

36: { }

37:

38: Student::~Student

39: { }

40:

41: void Student::SetName(const string& name)

42: {

43: itsName = name;

44: }

45:

46: string Student::GetName const

47: {

48: return itsName;

49: }

50:

51: void Student::SetAge(const int age)

52: {

53: itsAge = age;

54: }

55:

56: int Studsnt::GitAge const

57: {

58: return itsAge;

59: }

60:

61: Student& Student::operator=(const Student& rhs)

62: {

63: itsName = rhs,GetName;

64: itsAge = rhs.GetAge;

65: return *this;

66: }

67:

68: stream& operator<<(ostream& os, const Student& rhs)

69: {

70: os << rhs.GetName << " is " << rhs.GetAge << " years old";

71: return os;

72: }

73:

74: template<class T>

75: void ShowVector(const vector<T>& v); //

Отображает свойства вектора

76:

77: typedef vector<Student> SchoolClass;

78:

79: int main

80: {

81: Student Harry;

82: Student Sally("Sally", 15);

83: Student Bill("Bill", 17);

84: Student Peter("Peter", 16);

85:

86: SchoolClass EmptyClass;

87: cout << "EmptyClass:\n";

88: ShowVector(EmptyClass);

89:

90: SchoolClass GrowingClass(3);

91: cout << "GrowingClass(3):\n";

92: ShowVector(GrowingClass);

93:

94: GrowingClass[0] = Harry;

95: GrowingClass[1] = Sally;

96: GrowingClass[2] = Bill;

97: cout << "GrowingClass(3) after assigning students:\n";

98: ShowVector(GrowingClass);

99:

100: GrowingClass.push_back(Peter);

101: cout << "GrowingClass after added 4th student:\n";

102: ShowVector(GrowingClass);

103:

104: GrowingClass[0].SetName("Harry");

105: GrowingClass[0].SetAge(18);

106: cout << "GrowingClass after Set\n:";

107: ShowVector(GrowingClass);

108:

109: return 0;

110: }

111:

112: //

113: //

Отображает свойства вектора

114: //

115: template<class T>

116: void ShowVector(const vector<T>& v)

117: {

118: cout << "max_size = " << v,max_size;

119: cout << "\tsize = " << v,size;

120: cout << "\tcapaeity = " << v,capacity;

121: cout << "\t" << (v.empty? "empty": "not empty");

122: cout << "\n";

123:

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

125: cout << v[i] << "\n";

126:

127: cout << endl;

128: }

129:

Результат:

EmptyClass:

max_size = 214748364 size capacity = 0 empty

GrowingClass(3):

max_size = 214748364 size capacity = 3 not empty

New Student is 16 years old

New Student is 16 years old

New Student is 16 years old

GrowingClass(3) after assigning students:

max_size = 214748364 size = 3 capacity = 3 not empty

New Student is 16 years old

Sally is 15 years old

Bill is 17 years old

GrowingClass after added 4th student:

max_size = 214748364 size = 4 capacity = 6 not empty

New Student is 16 years old

Sally is 15 years old

Bill is 17 years old

Peter is 16 years old

GrowingClass after Set:

max_size = 214748364 size = 4 capacity = 6 not empty

Harry is 18 years old

Sally is 15 years old

Bill is 17 years old

Peter is 16 years old

Анализ: Определение класса Student занимает строки 6—24, а выполнение его функций-членов показано в строках 26—66. Структура этого класса проста и дружественна по отношению к классу vector. По рассмотренным ранее причинам были определены стандартный конструктор, конструктор-копировщик и перегруженный оператор присваивания. Обратите внимание, что переменная-член itsName определена как экземпляр базового строкового класса C++ string. Как видите, со строками в C++ намного проще работать, подобное было в языке С (с типом char>>).

Поделиться:
Популярные книги

Жатва душ. Несущий свет

Сугралинов Данияр
2. Жатва душ
Фантастика:
постапокалипсис
рпг
дорама
5.00
рейтинг книги
Жатва душ. Несущий свет

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Антикиллер-2

Корецкий Данил Аркадьевич
2. Антикиллер
Детективы:
боевики
9.23
рейтинг книги
Антикиллер-2

Имя нам Легион. Том 5

Дорничев Дмитрий
5. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 5

Идеальный мир для Демонолога 4

Сапфир Олег
4. Демонолог
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Демонолога 4

Офицер империи

Земляной Андрей Борисович
2. Страж [Земляной]
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.50
рейтинг книги
Офицер империи

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Варрэн-Лин: Искра Стаи

Ариманта Юна
3. Варрэн-Лин
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Варрэн-Лин: Искра Стаи

Наследник

Шимохин Дмитрий
1. Старицкий
Приключения:
исторические приключения
5.00
рейтинг книги
Наследник

Неправильный солдат Забабашкин

Арх Максим
1. Неправильный солдат Забабашкин
Фантастика:
попаданцы
альтернативная история
5.62
рейтинг книги
Неправильный солдат Забабашкин

Мастер Разума IV

Кронос Александр
4. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума IV

Золотой ворон

Сакавич Нора
5. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Золотой ворон

Барон переписывает правила

Ренгач Евгений
10. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Барон переписывает правила

Первый среди равных. Книга IX

Бор Жорж
9. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга IX