Поскажите по С++
от Сергей Клементьев - Пятница 5 Апрель 2013, 20:14
1404. Личные дела
  Подскажите как в с++ можно сделать массив из строк, т.е., что бы в кажом элементе массива была строка
P.S. Например если взять int z[10], то 0-9 элемент массива можно поместить число не превышающее -32000 до 32000, как тоже самое сделать со строками???
P.S.S. Заранее спасибо.
Re: Поскажите по С++
от Peter Cherepanov - Пятница 5 Апрель 2013, 21:37
  Проще всего хранить все данные об ученике в структуре.
Память для строковых полей зарезервировать по максимуму, т.е. 21 символ.
Структуры хранить в массиве, который при желании тоже может быть статическим.
Сортировать массив ссылок на записи.

В олимпиадной задаче такой подход -- самый правильный.
В промышленном программировании с памятью нужно обращаться по-осторожнее.
Re: Поскажите по С++
от Сергей Клементьев - Пятница 5 Апрель 2013, 22:17
  Я все это знаю как сделать, я не представляю как сделать вот это:
char z[10];
z[0]='Ivanov';
z[1]='Petrov';
z[2]='Sidorov';
если написать так, то он будет хранить только последний элемент фамилии в массиве, а я хочу что бы он сохранял там всю фамилию, как это сделать?? Подскажите пожалуйста.
Re: Поскажите по С++
от Peter Cherepanov - Пятница 5 Апрель 2013, 23:02
  Можно хранить указатели:
char *p;
p = "foo";

Можно копироать строки.
char s[10];
strcpy(s,"foo");
Re: Поскажите по С++
от Сергей Клементьев - Суббота 6 Апрель 2013, 16:36
  Спасибо:)
Re: Поскажите по С++
от Андрей Глейх - Суббота 6 Апрель 2013, 16:51
  А может не стоит изобретать велосипед и использовать решения из STL? Допустим vtctor ?
Re: Поскажите по С++
от Сергей Клементьев - Суббота 27 Апрель 2013, 15:22
  Под словом vtctor имелось ввиду vеctor:)
P.S. Если да, то я не знаком с векторами(
Re: Поскажите по С++
от Андрей Глейх - Воскресенье 4 Май 2014, 15:51
  Вектор это прямой аналог массива из чистого C/C++
Единственный из всех контейнеров обладает обратной совместимостью с решениями из чистого языка. Но одновременно имеет и все плюшки STL в виде итераторов и алгоритмов