【问题标题】:Trying to Sort and Merge two vectors尝试对两个向量进行排序和合并
【发布时间】:2014-04-08 12:49:42
【问题描述】:
  1. 尝试对两个向量进行排序和合并
  2. 不断收到此错误: c:\users\austin\documents\visual studio 2013\projects\hw 16\hw 16\h16.cpp(42): error C3861: 'lowestVal': identifier not found
  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 minimumVal(const vector& v, int val) {

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

    }

【问题讨论】:

    标签: sorting vector merge


    【解决方案1】:

    将最低值的声明放在它被调用之前:

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

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

    【讨论】:

    • 谢谢!但现在由于某种原因,我的一个循环超出了界限
    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2011-12-30
    • 2015-05-06
    • 2016-12-03
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多