Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π‘++ Π·Π° 21 дСнь.Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 133

Автор ДТСсс Π›ΠΈΠ±Π΅Ρ€Ρ‚ΠΈ

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ созданныС массивы ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΈΡ… дСструкторов Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΈ всС ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠŸΡ€ΠΎΡ†Π΅ΡΡ удалСния ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ Π² строкС 16 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² строках 18-43) Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ нСсколько строк ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (со 114 ΠΏΠΎ 118), содСрТащиС спСциализированный конструктор класса Array. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для создания массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Animal вызываСтся конструктор шаблона, показанныйвстроках74-81.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Animal для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° массива (строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 79 ΠΈ 80), Ρ‡Ρ‚ΠΎ отраТаСтся Π² строках 18-20 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… аспСктах, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ ΠΈ слСдовало ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹.

БтатичСскиС Ρ‡Π»Π΅Π½Ρ‹ ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹

Π’ шаблонС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр шаблона Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнный Π½Π°Π±ΠΎΡ€ статичСских Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-Ρ‡Π»Π΅Π½ Π² шаблон Array (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для подсчСта количСства созданных массивов), Ρ‚ΠΎ Π² рассмотрСнной Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ созданы Π΄Π²Π΅ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Π°: ΠΎΠ΄Π½Π° для подсчСта массивов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Animal ΠΈ другая для массивов Ρ†Π΅Π»Ρ‹Ρ… чисСл. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-Ρ‡Π»Π΅Π½Π° ΠΈ статичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² шаблон Array ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 19.7.

Листинг 19.7. ИспользованиС статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-Ρ‡Π»Π΅Π½ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ² с шаблонам

1: #include <iostream.h>

2:

3: const int DefaultSize = 3;

4:

5: // ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс, ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся массив

6: class Animal

7: {

8:    public:

9:       // конструкторы

10:      Animal(int);

11:      Animal();

12:      ~Animal();

13:

14:      // ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа

15:      int GetWeight() const { return itsWeight: }

16:      void SetWeight(int theWeight) { itsWeight = theWeight }

17:

18:      // друТСствСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

19:      friend ostream& operator<< (ostream&, const Animal&);

20:

21:   private:

22:      int itsWeight;

23: };

24:

25: // ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Anlmal

26: ostream& operator<<

27:    (ostream& theStream, const Animal& theAnimal)

28: {

29:    theStream << theAnimal.GetWeight();

30:    return theStream;

31: }

32:

33: Animal::Animal(int weight):

34: itsWeight(weight)

35: {

36:    //cout << "animal(int) ";

37: }

38:

39: Animal::Animal():

40: itsWeight(0)

41: {

42:    // cout << "animal() ";

43: }

44:

45: Animal::~Animal()

46: {

47:    // cout << "Destroyed an animal...";

48: }

49:

50: template <class T> // объявляСм шаблон ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

51: class Array // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс

52: {

53:    public:

54:       // конструкторы

55:       Array(int itsSize = DefaultSize);

56:       Array(const Array &rhs);

57:       ~Array() { delete [] Ρ€Π’ΡƒΡ€Π΅; itsNumberArrays-; }

58:

59:       // ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

60:       Array& operator=(const Array&);

61:       T& operator[](int offSet) { return pType[offSet]; }

62:       const T& operator[](int offSet) const

63:          { return pType[offSet]; }

64:       // аксСссоры

65:       int GetSize() const { return itsSize; }

66:       static int GetNumberArrays() { return itsNumberArrays; }

67:

68:       // функция-Π΄Ρ€ΡƒΠ³

69:       friend ostream& operator<< (ostream&, const Array<T>&); 70:

71:    private:

72:       T *pType;

73:       int itsSize;

74:       static int itsNumberArrays;

75: };

76:

77: template <class T>

78: int Array<T>::itsNumberArrays = 0;

79:

80: template <class T>

81: Array<T>::Array(int size = DefaultSize):

82: itsSize(size)

83: {

84:    pType = new T[size];

85:    for (int i = 0; i<size; i++)

86:       pType[i] = (T)0;

87:    itsNumberArrays++;

88: }

89:

90: template <class T>

91: Array<T>& Array<T>::operator=(const Array &rhs)

92: {

93:    if (this == &rhs)

94:       return *this;

95:    delete [] pType;

96:    itsSize = rhs.GetSize();

97:    pType = new T[itsSize];

98:    for (int i = 0; i<itsSize; i++)

99:       pType[i] = rhs[i];

100: }

101:

102: template <class T>

103: Array<T>::Array(const Array &rhs)

104: {

105:    itsSize = rhs.GetSize();

106:    pType = new T[itsSize];

107:    for (int i = 0; i<itsSize; i++)

108:       pType[i] = rhs[i];

109:    itsNumberArrays++;

110: }

111:

112:

113: template <class T>

114: ostream& operator<< (ostream& output, const Array<T>& theArray)

115: {

116:    for (int i = 0: i<theArray.GetSize(); i++)

117:       output'<< "[" << i << "] " << theArray[i] << endl;

118:    return output;

119: }

120:

121:

122:

123: int main()

124: {

125:

126:    cout << Array<int>::GetNumberArrays() << " integer arrays\n";

127:    cout << Array<Animal>::GetNumberArrays();

128:    cout << " animal arrays\n\n";

129:    Array<int> intArray;

130:    Array<Animal> animalArray;

131:

132:    cout << intArray.GetNumberArrays() << " integer arrays\n";

133:    cout << animalArray.GetNumberArrays();

134:    cout << " animal arrays\n\n";

135:

136:    Array<int> *pIntArray = new Array<int>;

137:

138:    cout << Array<int>::GetNumberArrays() << " integer arrays\n";

139:    cout << Array<Animal>::GetNumberArrays();

140:    cout << " animal arrays\n\n";

141:

142:    delete pIntArray;

143:

144:    cout << Array<int>::GetNumberArrays() << " integer arrays\n";

145:    cout << Array<Animal>::GetNumberArrays();

146:    cout << " animal arrays\n\n";

147:    return 0;

148: }


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

0 integer arrays

0 animal arrays

1 integer arrays

1 animal arrays

2 integer arrays

1 animal arrays

1 integer arrays

1 animal arrays


Анализ: Для экономии мСста Π² листингС ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ объявлСниС класса Animal. Π’ класс Array Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° статичСская пСрСмСнная itsNumberArrays (Π² строкС 74), Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта пСрСмСнСнная ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ‡Π»Π΅Π½ΠΎΠ², Π² строкС 66 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ доступа GetNumberArrays().

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-Ρ‡Π»Π΅Π½Π° выполняСтся явно Π² строках 77 ΠΈ 78. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ дСструктор класса Array ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ число массивов, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Доступ ΠΊ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π² шаблонС, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со статичСскими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ класса: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступа, Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² строках 132 ΠΈ 133, ΠΈΠ»ΠΈ явным ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² строках 126 ΠΈ 127. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-Ρ‡Π»Π΅Π½Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ массива, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ создана своя статичСская пСрСмСнная-Ρ‡Π»Π΅Π½.


РСкомСндуСтся:Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ статичСскиС Ρ‡Π»Π΅Π½Ρ‹ Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ шаблона ΠΏΡƒΡ‚Π΅ΠΌ замСщСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ шаблона для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π£ΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ статичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ шаблона, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° шаблонов

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ вСрсии языка C++ являСтся принятиС стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ шаблонов (Standard Template Library β€” STL). ВсС основныС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ компиляторов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ STL ΠΊΠ°ΠΊ ΡΠΎΡΡ‚Π°Π²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². STL β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…. Она Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, списки, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ стСки, Π° Ρ‚Π°ΠΊΠΆΠ΅ ряд Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±Ρ‰ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠ°ΠΊ сортировка ΠΈ поиск.

ЦСль Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ STL состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒ вас ΠΎΡ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ изобрСтСния колСса ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π° вас Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ общСпринятыС процСссы. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° STL оттСстирована ΠΈ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½Π°, отличаСтся высокой ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚. Π’Π°ΠΆΠ½Π΅Π΅ всСго Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ STL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ собствСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. НСобходимо Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ STL ΠΈ классов- ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C++ прСдоставляСт ряд классов-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдствами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ C++ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ программирования. Π‘Ρ€Π΅Π΄ΠΈ классов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ шаблонов (STL) Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Π²Π° Ρ‚ΠΈΠΏΠ°: ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ассоциативныС. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для обСспСчСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа ΠΊ своим Ρ‡Π»Π΅Π½Π°ΠΌ, ΠΈΠ»ΠΈ элСмСнтам. АссоциативныС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ своим элСмСнтам ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ значСниям. Подобно Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° STL совмСстима с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами. ВсС классы-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ STL ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² пространствС ΠΈΠΌΠ΅Π½ std.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹

Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ шаблонов ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ эффСктивный ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ списку ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C++ прСдоставляСт Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²: Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, списки ΠΈ двухсторонниС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.