§ 11. Структураваны тып даных масіў

11.3. Аперацыі над масівамі

Масівы, апісаныя тыпам даных vector, можна выкарыстоўваць у аперацыях прысвойвання. У выніку выканання гэтай каманды ўсе элементы аднаго масіву будуць перапісаны ў другі (прыклад 11.9)

Калі ў апісанні вектары маюць розны памер, то ён будзе ператвораны, паколькі вектары з’яўляюцца дынамічнымі структурамі, якія могуць змяняць свой памер у час выканання праграмы.

Вектары можна параўноўваць. Пры параўнанні выкарыстоўваюць аперацыі параўнання «==» і «!=». Вектары роўныя, калі яны змяшчаюць аднолькавыя элементы на тых жа пазіцыях, інакш яны не роўныя.

Іншыя аперацыі для масіву як для тыпу даных не вызначаны.

Аперацыі, якія выконваюцца з элементамі масіву, адпавядаюць аперацыям, якія выконваюцца над базавым тыпам. Калі, напрыклад, апісаны масіў з лікаў тыпу int, то з элементамі такога масіву можна выконваць такія ж аперацыі, як і з цэлымі лікамі. Элементы масіву называюць індэксаванымі пераменнымі. Яны могуць выкарыстоўвацца гэтак жа, як і простыя пераменныя (прыклад 11.10). 

Прыклад 11.9. Няхай масівы a і b апісаны наступным чынам:

   vector <int> a(25), b(30);  

У выніку выканання каманды:

   a = b;   

памер масіву a будзе павялічаны да 30 элементаў, усе элементы ў масіве a будуць мець тыя ж значэнні, што і ў масіве b.

У выніку выканання каманды:

  b = a;   

памер масіву b будзе паменшаны да 25 элементаў, усе элементы ў масіве b будуць мець тыя ж значэнні, што і ў масіве a. Значэнні апошніх 5 элементаў, якія зыходна былі ў вектары b, будуць страчаны.

Прыклад 11.10. Аперацыі над індэксаванымі пераменнымі:

  a[3] = 25 % 7;

  sr = (t[0] + T[29]) / 2;

  b[k] = a[k] * 2;

  sum = sum + a[i];

  if (s[i] < 0) …

  n = s[i].length();