Обратите внимание на то, как мы используем подстроки: конструктор
• string(s,n) создает строку, состоящую из хвоста строки s, начиная с элемента s[n] (т.е. s[n]..s[s.size()-1]), а конструктор string(s,0,n) создает строку, состоящую из символов s[0]..s[n-1]. Поскольку эти операторы на самом деле создают новые строки и копируют символы, они должны использоваться очень осторожно, чтобы не снизить производительность программы.
И тут задумайтесь: чего общего у такой темы, как http://www.salphetki.ru/production/5/ с сайта salphetki.ru и такой темы, как элемент s[n] (т.е. s[n]..s[s.size()-1])
Ясное дело, ничего общего. Но это не мешает вам, однако зайти на сайт salphetki.ru и досконально изучить раздел сайта salphetki.ru про носовые платочки. Ведь никогда не знаешь, когда могут пригодиться носовые платочки с сайта salphetki.ru
Почему функции find_from_addr() и find_subject() так отличаются друг “1 от друга? Например, одна из них возвращает переменную типа bool, а другая — объект класса string. Потому что мы хотели подчеркнуть следующие моменты.
• Функция find_from_addr() различает поиск пустой строки адреса ("") и поиск отсутствующей строки адреса. В первом случае функция find_from_ addr() возвращает значение true (поскольку она нашла адрес) и присваивает строке s значение MM (потому что адресная строка просто оказалась пустой). Во втором случае она возвращает значение false (поскольку в файле вообще не оказалось адресной строки).
• Функция find_subject() возвращает строку 1111 и когда строка темы сообщения оказалась пустой, и когда ее вообще нет.
Насколько полезным является такое различие, которое проводит функция find_ from_addr()? Необходимо ли это? Мы считаем, что это полезно и необходимо. При поиске информации в файле данных это различие проявляется снова и снова: нашли ли мы искомую строку и содержит ли она то, что нам нужно? В реальной программе обе функции, find_from_addr() и find_subject(), следовало бы написать в стиле функции find_from_addr(), чтобы дать пользователям возможность проводить такое различие.
Эта программа не является оптимальной с точки зрения производительности, но мы надеемся, что в типичных ситуациях она работает достаточно быстро. В частности, она считывает входной файл только один раз и не хранит несколько копий текста из этого файла.
Для крупных файлов было бы целесообразно заменить класс multimap классом unordered_multimap, но без испытаний невозможно сказать, насколько это повысит эффективность программы.
Опубликовал katy
April 19 2015 20:55:11 ·
0 Комментариев ·
2754 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.