#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;
}
Помогите разобраться
Допустим у меня есть экземпляр класса vector:
//
using namespace std;
vector <string> v1;
//
Я помещаю в него строки:
//
v1.push_back("sa");
v1.push_back("sb");
v1.push_back("sc");
// И тому подобное
Каким образом я могу узнать есть ли в v1 строка "sh" и если есть то её индекс(положение)?
Цитата:
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" и если есть то её индекс(положение)?
Помогите разобраться.
Допустим у меня есть экземпляр класса vector:
//
using namespace std;
vector <string> v1;
//
Я помещаю в него строки:
//
v1.push_back("sa");
v1.push_back("sb");
v1.push_back("sc");
// И тому подобное
Каким образом я могу узнать есть ли в v1 строка "sh" и если есть то её индекс(положение)?
зачем тебе индекс?
Код:
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)
{
//Обработка
...
}
Цитата:
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)
{
//Обработка
...
}
У меня массив строк в 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. Если к этому итератору применить рызыменование *, то получишь ссылку на значение.
Цитата:
Originally posted by solovey
чем не устраивает итератор?
find(v1.begin(), v1.end(), _mystring) вернет тебе итератор на элемент вектора со строкой _mystring. Если к этому итератору применить рызыменование *, то получишь ссылку на значение.
чем не устраивает итератор?
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
]
, хотя вроде не должен.
Цитата:
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
]
, хотя вроде не должен.
если я делаю так:
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;
}
#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;
}