c ++:在向量中搜索

时间:2013-02-20 21:15:14

标签: c++ vector

我正在尝试为计算机创建定价系统,我想创建两个向量,一个存储项目名称,另一个是项目的价格。我的计划是有两个方法,“find_item”,它在向量中找到项目名称并返回其索引,以及“get_itemPrice”,它从find_item获取索引并获取价格。我的问题是提出一个代码,它接受一个向量内的字符串对象并返回其索引位置。

3 个答案:

答案 0 :(得分:6)

您只需使用std::find即可。它会将迭代器返回到第一个元素,该元素等于您要搜索的元素,如果没有找到,则返回end()。然后,您可以使用std::distance从中获取索引,如果您确实需要它。

答案 1 :(得分:0)

像这样:

vector<int> vect;
int i = 0;
for (vector<int>::iterator iter = vect.begin(); iter != vect.end(); ++iter)
{
  if (*iter == vect)
    break;
  i++;
}
if (i == vect.size())
  // not found
else
  // i is your index

答案 2 :(得分:0)

如果你真的想让算法像这样做,但一般不应该尝试击败那些在stl中看到算法标题

unsigned find_str( const vector<string>&  vec, const string& key ){
    unsigned count = 0;
    vector<string>::const_iterator it;
    for ( it = vec.begin() ; it < vec.end(); it++ ){
        if( *it == key)
            return count;
        count++;
    }
    /*throw not found error here.*/
}