Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / C / C++ / Введение в язык C++ / Описания и Константы /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Типы - Программирование от RIN.RU
Типы



Вектора


Для типа T T[size] является типом "вектор из size элементов типа T". Элементы индексируются (нумеруются) от 0 до size-1.


Например:


float v[3]; // вектор из трех float: v[0], v[1], v[2]
int a[2][5]; // два вектора из пяти int
char* vpc; // вектор из 32 указателей на символ


Цикл для печати целых значений букв нижнего регистра можно было бы написать так:


extern int strlen(char*);
char alpha[] = "abcdefghijklmnoprstuvwxyz";
main()
{
int sz = strlen(alpha);
for (int i=0; i.


Функция strlen() использовалась для подсчета числа символов в alpha; вместо этого можно было использовать значение размера alpha ( см. этот пункт). Если применяется набор символов ASCII, то выдача выглядит так:


"a" = 97 = 0141 = 0x61
"b" = 98 = 0142 = 0x62
"c" = 99 = 0143 = 0x63
...


Заметим, что задавать размер вектора alpha необязательно; компилятор считает число символов в символьной строке, указанной в качестве инициализатора. Использование строки как инициализатора для вектора символов - удобное, но к сожалению и единственное применение строк. Аналогичное этому присваивание строки вектору отсутствует.


Например:


char v[9];
v = "строка"; // ошибка


ошибочно, поскольку присваивание не определено для векторов.


Конечно, для инициализации символьных массивов подходят не только строки. Для остальных типов нужно применять более сложную запись. Эту запись можно использовать и для символьных векторов.


Например:


int v1[] = { 1, 2, 3, 4 };
int v2[] = { "a", "b", "c", "d" };


char v3[] = { 1, 2, 3, 4 };
char v4[] = { "a", "b", "c", "d" };


Заметьте, что v4 - вектор из четырех (а не пяти) символов; он не оканчивается нулем, как того требуют соглашение и библиотечные подпрограммы. Обычно применение такой записи ограничивается статическими объектами.


Многомерные массивы представляются как вектора векторов, и применение записи через запятую, как это делается в некоторых других языках, дает ошибку при компиляции, так как запятая (,) является операцией последования (см. этот пункт). Попробуйте, например, сделать так:


int bad[5,2]; // ошибка


и так:


int v[5][2];
int bad = v[4,1]; // ошибка
int good = v[4][1]; // ошибка


Описание char v[2][5]; описывает вектор из двух элементов, каждый из которых является вектором типа char[5]. В следующем примере первый из этих векторов инициализируется первыми пятью буквами, а второй - первыми пятью цифрами.


char v[2][5] = {
"a", "b", "c", "d", "e",
"0", "1", "2", "3", "4"
}


main() {
for (int i = 0; i<2; i++) {
for (int j = 0; j<5; j++)
cout << "v[" << i << "][" << j
<< "]=" << chr(v[i][j]) << " ";
cout << "\n";
}
}


это дает в результате


v[0][0]=a v[0][1]=b v[0][2]=c v[0][3]=d v[0][4]=e
v[1][0]=0 v[1][1]=1 v[1][2]=2 v[1][3]=3 v[1][4]=4


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7  8  9 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Описания

Имена

Константы

Экономия Пространства

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь