// 【场景】向量vector查找
// 编写一个函数 findElement，接受一个整数向量和一个目标值作为参数，并返回目标值在向量中的索引。
// 如果目标值不存在于向量中，则返回 -1。
#include <iostream>
#include <vector>
#include <string>

using namespace std;

int findElement(vector<int> &v, const int &item)
{
    int index = 0;
    vector<int>::iterator it = v.begin();
    while (it != v.end())
    {
        if (*it == item)  // 如果找到了
            return index; // 返回索引
        index++;          // 索引加一
        it++;             // 迭代器指向下一个元素
    }
    return -1;
}

string print(int item)
{
    if (item == -1)
        return "目标不存在";
    else
    {
        // to_string() 函数可以将整数转换为字符串
        // 需要 #include <string> 头文件
        // 需要 c++11 标准，编译时加上 -std=c++11
        string s = to_string(item);
        return s;
    }
}

int main()
{
    int arr[] = {1, 2, 3, 4, 5, 4, 6, 7, 8, 9, 10};                              // 定义数组
    vector<int> v1(arr, arr + sizeof(arr) / sizeof(arr[0]));                     // 将数组转换为向量
    cout << "5 在目标值向量中的索引为: " << print(findElement(v1, 5)) << endl;   // 4
    cout << "11 在目标值向量中的索引为: " << print(findElement(v1, 11)) << endl; // -1
    return 0;
}
