尝试排序和合并两个向量

时间:2014-03-06 04:38:09

标签: sorting vector merge

  1. 尝试排序和合并两个向量
  2. 不断收到此错误: c:\ users \ austin \ documents \ visual studio 2013 \ projects \ hw 16 \ hw 16 \ h16.cpp(42):错误C3861:'lowestVal':未找到标识符
  3. 我如何改进我的代码

    vector mergeSorted(const vector& a,const vector& b) {     矢量结果;     int m = 0;

    if (a.size() < b.size())
    {
        m = a.size();
    }
    else
    {
        m = b.size();
    }
    
    for (int i = 0; i < m; i++)
    {
        result.push_back(a[i]);
        result.push_back(b[i]);
    }
    
    if (m == a.size())
    {
        result.insert(result.end(), b.begin() + m, b.end());
    }
    if (m == b.size())
    {
        result.insert(result.end(), a.begin() + m, a.end());
    }
    
    for (size_t i = 0; i < result.size(); i++)
    {
        //function that checks for lowest val
        result.insert(result.begin() + lowestVal(result, a[i]), a[i]);
    }
    
    return result;
    

    }

    int lowestVal(const vector&amp; v,int val) {

    for (size_t i = 0; i < v.size(); i++)
    {
        if (val < v[i])
        {
            return i;
        }
        else
        {
            return v.size();
        }
    
    }
    

    }

1 个答案:

答案 0 :(得分:0)

在调用之前输入lowestVal的声明:

int lowestVal(const vector& v, int val);
vector mergeSorted(const vector& a, const vector& b) { // ...

这称为forward declaration。编译器必须知道标识符的类型,因此必须在使用之前声明它。