我正在尝试检查字符向量中是否存在字符,如果存在,则获取它的编号。我已完成第一部分(检查是否存在char):
char letter(a);
string word;
vector<char>vWord(word.begin(), word.end());
if(find(vWord.begin(), vWord.end(), letter) != vWord.end()){}
但我不知道如何获得这个职位。任何帮助表示赞赏。
答案 0 :(得分:2)
保存迭代器并对其进行一些数学运算:
vector<char>::iterator itr = find(vWord.begin(), vWord.end(), letter);
if(itr != vWord.end())
{
int index = itr - vWord.begin();
}
但请注意std::string
已有find
方法。
答案 1 :(得分:1)
你几乎就在那里。您已经有一个指向该字符的迭代器(由find
返回),因此您可以使用std::distance
来查找距离:
char letter(a);
string word;
vector<char>vWord(word.begin(), word.end());
auto it = find(vWord.begin(), vWord.end(), letter);
if (it != vWord.end())
{
size_t index = std::distance(vWord.begin(), it);
}
对于随机访问迭代器(例如std::vector
使用的那些迭代器),std::distance(a, b)
是一个常量操作,通过执行b - a
来实现。
附注:您可以直接在std::find
上执行std::string
和迭代器操作;它本身就是一个非常精致的容器。