Получил ваш вопрос после перечитывания:)
1. string str[10]
, как вы упомянули, не создает массив из 10 строк, так как строки создаются в куче, а не в стеке.
Если вы хотите создать массив строк для размещения ваших данных ... тогда это должно быть char * name[10];
, и каждый раз, когда вы читаете строку и получаете первые 3 символа, которые вы делаете new char[3]
(вы должны сохранить его всимвол * правильно ??).
Иначе, чтобы быть более эффективным и в зависимости от ваших данных, вы можете создать char arr[30]
и выполнить выравнивание в 3 байта для самостоятельного чтения.
Теперь вы можете значительно упростить свою жизнь, используя контейнеры STL.
vector < map < string,int > > arr; arr.reserve(10);
Преимуществ много: 1) Нет управления памятьюбыть сделано вами.
2) Использование итераторов для циклического прохождения.
3) И не будет большой разницы в производительности, даже если вы сравните его с моим первым методом.