在向量中获取char的位置(C ++)

时间:2016-11-29 15:18:17

标签: c++ string vector char

我正在尝试检查字符向量中是否存在字符,如果存在,则获取它的编号。我已完成第一部分(检查是否存在char):

char letter(a);
string word;
vector<char>vWord(word.begin(), word.end());
if(find(vWord.begin(), vWord.end(), letter) != vWord.end()){}    

但我不知道如何获得这个职位。任何帮助表示赞赏。

2 个答案:

答案 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和迭代器操作;它本身就是一个非常精致的容器。