我想檢查字符是否存在於向量中,如果是,就得到它的編號。我已經完成了第一部分(檢查是否存在字符):獲取在向量中的字符位置(C++)
char letter(a);
string word;
vector<char>vWord(word.begin(), word.end());
if(find(vWord.begin(), vWord.end(), letter) != vWord.end()){}
但我不知道如何獲得該位置。任何幫助表示讚賞。
我想檢查字符是否存在於向量中,如果是,就得到它的編號。我已經完成了第一部分(檢查是否存在字符):獲取在向量中的字符位置(C++)
char letter(a);
string word;
vector<char>vWord(word.begin(), word.end());
if(find(vWord.begin(), vWord.end(), letter) != vWord.end()){}
但我不知道如何獲得該位置。任何幫助表示讚賞。
保存迭代器,並做一些關於它的計算方法如下:
vector<char>::iterator itr = find(vWord.begin(), vWord.end(), letter);
if(itr != vWord.end())
{
int index = itr - vWord.begin();
}
但是千萬注意,std::string
已經有一個find
方法。
你快到了。你已經有指向該字符(由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::string
上做std::find
和迭代器操作;它本身就是一個非常好的容器。
您可以簡單地使用['std :: string :: find'](http://en.cppreference.com/w/cpp/string/basic_string/find),它將返回索引 –
'int index = std :: find(vWord.begin(),vWord.end(),letter) - vWord.begin();' – George
@KarstenKoop:你應該做出答案。 –