Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться

7.5K
17 августа 2005 года
Ivan_Cheremisov
23 / / 11.05.2005
Помогите разобраться.
Допустим у меня есть экземпляр класса vector:
//
using namespace std;
vector <string> v1;
//
Я помещаю в него строки:
//
v1.push_back("sa");
v1.push_back("sb");
v1.push_back("sc");
// И тому подобное
Каким образом я могу узнать есть ли в v1 строка "sh" и если есть то её индекс(положение)?
1.9K
17 августа 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by Ivan_Cheremisov
Помогите разобраться.
Допустим у меня есть экземпляр класса vector:
//
using namespace std;
vector <string> v1;
//
Я помещаю в него строки:
//
v1.push_back("sa");
v1.push_back("sb");
v1.push_back("sc");
// И тому подобное
Каким образом я могу узнать есть ли в v1 строка "sh" и если есть то её индекс(положение)?

зачем тебе индекс?

Код:
#include <vector>
#include <algorithm>

int main()
{
    std::vector< std::string > v1;
    v1.push_back("sa");
    v1.push_back("sb");
    v1.push_back("sc");

    if(std::find(v1.begin(),v1.end(),"sc") != v1.end())
        std::cout<<"Found!"<<std::endl;
    else
        std::cout<<"Not found :("<<std::endl;

    return 0;
}
7.5K
17 августа 2005 года
Ivan_Cheremisov
23 / / 11.05.2005
У меня массив строк в v1.
find(v1.begin(), v1.end(), _mystring)
Мне надо сравнить v1 со строкой _mystring и в зависимости от того что в ней (в _mystring) делать что-то, тут и нужен индекс.
например:
v1.push_back("start");
v1.push_back("stop");
v1.push_back("pause");
v1.push_back("end");
v1.push_back("print");
v1.push_back("select");

//_mystring="print";

//Поиск _mystring в v1, пусть в int temp будет индекс
//find(v1.begin(), v1.end(), _mystring)

myFunction(temp);


//
myFunction(int _t)
{
//Обработка
...
}
1.9K
18 августа 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by Ivan_Cheremisov
У меня массив строк в v1.
find(v1.begin(), v1.end(), _mystring)
Мне надо сравнить v1 со строкой _mystring и в зависимости от того что в ней (в _mystring) делать что-то, тут и нужен индекс.
например:
v1.push_back("start");
v1.push_back("stop");
v1.push_back("pause");
v1.push_back("end");
v1.push_back("print");
v1.push_back("select");

//_mystring="print";

//Поиск _mystring в v1, пусть в int temp будет индекс
//find(v1.begin(), v1.end(), _mystring)

myFunction(temp);


//
myFunction(int _t)
{
//Обработка
...
}

чем не устраивает итератор?
find(v1.begin(), v1.end(), _mystring) вернет тебе итератор на элемент вектора со строкой _mystring. Если к этому итератору применить рызыменование *, то получишь ссылку на значение.

7.5K
18 августа 2005 года
Ivan_Cheremisov
23 / / 11.05.2005
Цитата:
Originally posted by solovey
чем не устраивает итератор?
find(v1.begin(), v1.end(), _mystring) вернет тебе итератор на элемент вектора со строкой _mystring. Если к этому итератору применить рызыменование *, то получишь ссылку на значение.



если я делаю так:

vector<string>::iterator _iter;
_iter=find(v1.begin(),v1.end(),_mystring);
или так:
_iter=v1.begin();

то компилятор выдаёт ошибку:

e:\MyProject\Visual C++\Lex\Lexer.cpp(100): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::vector<_Ty>::const_iterator' (or there is no acceptable conversion)
with
[
_Ty=std::string
]
, хотя вроде не должен.

1.9K
18 августа 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by Ivan_Cheremisov
если я делаю так:

vector<string>::iterator _iter;
_iter=find(v1.begin(),v1.end(),_mystring);
или так:
_iter=v1.begin();

то компилятор выдаёт ошибку:

e:\MyProject\Visual C++\Lex\Lexer.cpp(100): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::vector<_Ty>::const_iterator' (or there is no acceptable conversion)
with
[
_Ty=std::string
]
, хотя вроде не должен.

что-то неправильно делаешь. У меня все работает.

Код:
#include <vector>
#include <algorithm>

int main()
{
    std::vector< std::string > v1;
    v1.push_back("sa");
    v1.push_back("sb");
    v1.push_back("sc");

    std::vector< std::string >::iterator it = std::find(v1.begin(),v1.end(),"sc");

    return 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог