gpt4 book ai didi

c++ - 如何获取字符串 vector 中某个元素的位置,将其用作整数 vector 中的索引?

转载 作者:IT老高 更新时间:2023-10-28 11:56:54 26 4
gpt4 key购买 nike

我正在尝试获取 strings vector 中元素的索引,以将其用作另一个 int 类型 vector 中的索引,这可能吗?

例子:

vector <string> Names;
vector <int> Numbers;

...
// condition to check whether the name exists or not
if((find(Names.begin(), Names.end(), old_name_)) != Names.end())
{ // if yes
cout <<"Enter the new name."<< endl;
cin >> name;
replace(Names.begin(), Names.end(), old_name_, name);
}

现在我想获取 old_nameNames vector 中的位置,以使用它来访问 Numbers vector 中的某些元素。所以我可以说:

Numbers[position] = 3 ; // or whatever value assigned here.

我尝试使用:

vector <string> :: const_iterator pos;
pos = (find(Names.begin(), Names.end(), old_name_))
Numbers[pos] = 3;

但显然这不起作用,因为 pos 是字符串类型!

最佳答案

要知道一个元素在 vector 中的位置,知道指向该元素的迭代器,只需从迭代器中减去 v.begin():

ptrdiff_t pos = find(Names.begin(), Names.end(), old_name_) - Names.begin();

现在你需要检查 posNames.size() 是否超出范围:

if(pos >= Names.size()) {
//old_name_ not found
}

vector 迭代器的行为类似于数组指针;你所知道的关于指针算法的大部分知识也可以应用于 vector 迭代器。

从 C++11 开始,您可以使用 std::distance代替迭代器和指针的减法:

ptrdiff_t pos = distance(Names.begin(), find(Names.begin(), Names.end(), old_name_));

关于c++ - 如何获取字符串 vector 中某个元素的位置,将其用作整数 vector 中的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com