2014-03-06 30 views
0
  1. 試圖排序和合並兩個向量
  2. 保持收到此錯誤: C:\用戶\奧斯汀\文件\的Visual Studio 2013 \項目\ HW 16 \ HW 16 \ H16的.cpp(42):錯誤C3861: 'lowestVal':標識符找不到
  3. 我怎樣才能提高我的代碼試圖排序和合並兩個向量

    矢量mergeSorted(常量矢量&一個,常量矢量& 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(常量矢量& V,INT VAL) {

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

    }

回答

0

將lowestVal的聲明它被稱爲前:

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

這叫做forward declaration。編譯器必須知道標識符的類型,所以在使用之前必須聲明它。

+0

謝謝!但現在我出於某種原因,我的一個循環出界了 – user3386534