distance
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: #include <iostream> #include <iomanip> #include <string> #include <map> #include <boost/tokenizer.hpp> typedef std::vector<std::string> V; typedef boost::tokenizer<boost::char_separator<char> > char_tokenizer; typedef std::map<std::string, bool> unique_map; V get_strings() { V v; // каким-нубудь образом заполним массив строками v.push_back("1 2 3"); v.push_back("2"); return (v); } void test_2() { /* Дано 10 символьных строк, состоящих из слов, разделенных пробелами. Вывести список неповторяющихся слов. */ V v = get_strings(); unique_map strings; // ассоциативный массив для выявления неповторяющихся слов boost::char_separator<char> separator(" "); // парсинг ... for(V::const_iterator stringIt = v.begin(); stringIt != v.end(); ++stringIt) { char_tokenizer tokens(*stringIt, separator); for(char_tokenizer::const_iterator it = tokens.begin(); it != tokens.end(); ++it) { unique_map::iterator mapIt = strings.find(*it); if (mapIt == strings.end()) { // строка пока встретилась только 1 раз strings.insert(unique_map::value_type(*it, true)); } else { // повтор строки - сбрасываем флаг уникальности mapIt->second = false; } } } // вывод результата for(unique_map::const_iterator it = strings.begin(); it != strings.end(); ++it) { if (it->second) { std::cout << it->first << std::endl; } } } | | Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 14:09 23-01-2007 | Исправлено: distance, 14:20 23-01-2007 |
|