Строки C++: массив строк c++

Для тех, кто ищет как создавать массивы строк C++ типа string[], char[][] эта статья будет не столь полезна, т.к. здесь я разбираю динамические массивы типа vector и map. Даже если вы прекрасно знаете как они работают, думаю, что будет интересен сам эксперимент.А целью эксперимента было выяснить скорость работы данных типов массивов.

Во-первых: для чего нам нужно использовать массивы строк? Допустим я практически во всех приложениях, независимо от того, на каком языке и для каких целей писал, сталкивался с массивами строк, коллекциями, списками.

Во-вторых: при обработке большого объема строк важно знать, какой класс будет работать быстрее, т.к. скорость будет критичной и программа может подвиснуть при обработке. С этим я тоже сталкивался и, если программа работала на стороне сервера (CGI), то apache сбрасывал соединение, не завершив работу скрипта (программы).

В-третьих: на многих форумах рекомендуют безумное множество вариантов работы с массивами строк. Я сразу сбрасываю массивы типа string[] и char[][], т.к. нет смысла подниматься по лестнице, когда есть лифт.

Для эксперимента написаны 4 функции: 2 для работы с vector<string> и 2 для работы с map<int, string>. Исследовались скорость добавления строки длиной в 1 байт в конец массива и получение данной строки по индексу.

Функции для работами с vector<string>:

Функции для работы с map<int, string>:

Протестировав получаем, что функции, работающие с vector выполняются в двыдцать раз быстрее, чем с map.

Вывод: работать с map стоит, только в случае, если вам нужно работать с именованными индексами. В случае работы с большим объемом данных и индексации порядковыми номерами вногократно быстрее работает vector.

Добавить комментарий

Ваш e-mail не будет опубликован.