2012-05-08 2 views
3

Я работаю над игровым решателем Boggle, который будет читать строки текстового файла (платы).vector <string> или vector <vector <char>>?

Я шел туда и обратно, если я должен использовать vector из string S или vector матрицу char с. Я думаю, что vector из chars будет проще получить доступ, так как это будет myvec[y][x], где vector из string s потребует от меня использовать функцию string.at().

Я не знаю, что будет иметь более высокую производительность, если я должен разобрать каждую строку в к char с или покинуть линию как string и доступ к каждому char по мере необходимости. Любые предложения, по которым я должен это делать? Объясняя , почему было бы полезно.

+4

Вы также можете использовать '[]' со строками. 'at' обеспечивает проверку вне пределов. – chris

+0

@chris О, никогда не пробовал это со струнами. Хорошо, что в значительной степени решил мой вопрос, так как вектор строк будет проще. Благодарю. – LF4

+2

Строки намного лучше, чем массивы символов. Всегда выбирайте их, если сможете. Просто, чтобы вы знали, синтаксис возможен через класс string, перегружающий 'operator []'. – chris

ответ

4

Как прокомментировано, вы можете использовать operator[] на строках точно так же, как vector s или массивы.

Под правильной оптимизации, то Performace будет примерно одинакова для vector<char>, как и для string - оба являются массивы под капотом, и в обоих случаях operator[] будет эффективно быть доступ к члену структуры и косвенный поиск. Они даже обеспечивают почти same set от methods.

Выберите, что делает ваш код более удобочитаемым/простым.