Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 376
#1

Vector - как сравнить записанные строки? - C++

26.01.2014, 09:36. Просмотров 696. Ответов 9
Метки нет (Все метки)

Здравствуйте.

C++
1
2
3
4
5
std::vector<std::string> g_Test;
 
g_Test.push_back("One");    
g_Test.push_back("Two");
g_Test.push_back("Three");
Есть строка: char *sTest;

Как проверить есть ли в моем контейнере строка схожая с sTest ?

Логично, что пройтись циклом по всему контейнеру и сравнить строки, но какой итератор использовать для вектора, ведь у меня строки:

C++
1
for( int i = 0; i <= g_WorldModels.size; i++)
А как далее сравнить g_Test с sTest ? По сути at, но я не могу всунуть в string, integer = g_WorldModels.at(i)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2014, 09:36     Vector - как сравнить записанные строки?
Посмотрите здесь:

Как сравнить двумерный vector? - C++
Здравствуйте, подскажите, пожалуйста, как сравнить поэлементно двумерный vector? Вот моя реализация, верно ли это? #include &quot;stdafx.h&quot;...

Как сравнить строки? - C++
Бобрый день. Подскажите пжалста, как можно сравнить строки без учета регистра (шобы самому не писать функцию перевода в нижний регистр). ...

Как корректно скопировать vector в vector внутри класса - C++
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

Как сравнить две строки? - C++
Написал программу но не проходит сравнение вот это сравнение: bool flight_weight(char* flight) { if (predmet==flight) return...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию? - C++
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

Как сравнить две строки string, введенных с клавиатуры, и вывести на экран строку которая больше? - C++
Как сравнить две строки string введенных с клавиатуры и вывести на экран строку которая больше ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.01.2014, 09:45     Vector - как сравнить записанные строки? #2
Преобразовать char* в std::string не судьба? А еще есть std::find
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.01.2014, 09:46     Vector - как сравнить записанные строки? #3
C++
1
2
3
4
5
6
7
8
9
10
11
    std::vector<std::string> vs;
 
    vs.push_back( "one" );
    vs.push_back( "two" );
    vs.push_back( "three" );
 
    for ( std::vector<std::string>::iterator it = vs.begin(); it != vs.end(); ++it ) {
        if ( *it == "two" ) {
            std::cout << *it << std::endl;
        }
    }
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 376
26.01.2014, 09:49  [ТС]     Vector - как сравнить записанные строки? #4
castaway, спасибо большое. Скажите пожалуйста, а этот способ быстрей ли будет?

C++
1
2
3
4
5
    for( auto iter = g_WorldModels.cbegin(); iter != g_WorldModels.cend(); iter++ )
    {
        if ( *iter == "two")
            break;
    }
Помойму из С++ 11 вычитал, что данный способ лучше.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
26.01.2014, 09:50     Vector - как сравнить записанные строки? #5
Цитата Сообщение от pEntity Посмотреть сообщение
Помойму из С++ 11 вычитал, что данный способ лучше.
тогда уж
C++
1
2
3
for ( auto x: g_WorldModels )
   if ( x == "str" )
      ...
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.01.2014, 10:03     Vector - как сравнить записанные строки? #6
C++
1
2
3
    auto it = std::find( vs.begin(), vs.end(), "two" );
    if ( it != vs.end() )
        std::cout << *it << std::endl;
Цитата Сообщение от pEntity Посмотреть сообщение
Помойму из С++ 11 вычитал, что данный способ лучше.
А что именно там было написано, почему он лучше?
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 376
27.01.2014, 08:03  [ТС]     Vector - как сравнить записанные строки? #7
А какой итератор нужен, чтоб узнать в цикле на каком я щас контейнере ?

x ведь хранит строку, а мне нужен номер.

?

castaway, введите в гугле for ( auto C++ и первая ссылка на хабре. Просто тут удаляют линк на другие ресурсы.

Просто удобней вобщем-то.

Добавлено через 21 час 51 минуту
C++
1
2
3
4
5
2
3
for ( auto x: g_WorldModels )
   if ( x == "str" )
      ...
Если строка совпала, как узнать под каким номером x ?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.01.2014, 08:13     Vector - как сравнить записанные строки? #8
Цитата Сообщение от pEntity Посмотреть сообщение
Если строка совпала, как узнать под каким номером x ?
Либо введите дополнительный счетчик, либо используйте сразу цикл по индексам (как в первом сообщении), а не через итераторы.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 376
27.01.2014, 08:40  [ТС]     Vector - как сравнить записанные строки? #9
for( int i = 0; i <= g_WorldModels.size; i++)
? А как строку мою узнать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 08:48     Vector - как сравнить записанные строки?
Еще ссылки по теме:

Как изменять размер std::vector<std::vector>? - C++
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: std::vector&lt;std::vector&lt;float&gt;&gt; data; ...

Как выполнять команды, записанные в другом файле (к примеру в txt)? - C++
В общем задача такая, нужно выполнить команду записанную в другом файле. К примеру, при выполнении программы необходимо выполнить команду...

STL. Map, vector. Строки - C++
Здравствуйте. Почти не знаком с STL. Имеется вектор строк. Нужно найти частоту использования каждой буквы. Я уже который...

vector выдает странные строки при использовании push_back - C++
Вот что я получаю *** Error in `./main': double free or corruption (!prev): 0x0000000001994a70 *** ======= Backtrace: ========= ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
27.01.2014, 08:48     Vector - как сравнить записанные строки? #10
C++
1
2
3
4
5
    for ( std::vector<std::string>::size_type i = 0 ; i < vs.size(); ++i ) {
        if ( vs[i] == "two" ) {
            //...
        }
    }
Yandex
Объявления
27.01.2014, 08:48     Vector - как сравнить записанные строки?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru