2017-01-09 12 views
-1

を使ってベクトルからdoubleを削除する学校の割り当てには、ベクトルのすべてのdouble要素を削除するのに<algorithm><functional>を使う必要があります。これは私が思いついたものですが、エラーがあります。C++は<algorithm>と<functional>

私は間違っていますか?

重大度コード説明プロジェクトファイルの行の抑制状態 エラーC3867 'のstd ::ベクトル<のstd ::文字列、のstd ::アロケータ< _Ty >> ::サイズ':非標準の構文。プロジェクト\ \ユーザーのVisual Studio 2015 \ \マイク\ドキュメント\ opdracht5 \ opdracht5 \ main.cppにawnserを発見38

bool IsEqual(string s, string s2) 
{ 
    if (s == s2) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 


int main() { 
    vector<string> coulours2 = { "red", "green", "blue", "orange", "purple", "orange", "black", "green" }; 
    vector<string> removedDoubles; 
    removedDoubles.resize(coulours2.size()); 
    vector<string>::iterator it; 
    it = unique_copy(removedDoubles.begin(), it, removedDoubles.begin(), IsEqual); 
    removedDoubles.resize(distance(removedDoubles.begin(), it)); 
    return 0; 
} 
+0

'for each(文字列var in removedDoubles)'は(また無効です)C#です。あなたは 'foreach'をその言語で(そしてキーワードであるので' var'を使わないように)したいでしょう。 C++では 'for(std :: string var:removedDoubles)'またはそれ以上の 'for(auto && var:removedDoubles)'が必要です。このコードにはいくつかの問題があります。 'IsEqual'おそらく、' std :: string'に 'double'の値を格納し、メンバ関数に非標準の構文を使ってsize_t値を渡して渡します。 – jaggedSpire

+0

コードを編集しました –

+0

おそらく簡単でしょう別の目的でコードを混ぜていないと時間がかかることがあります。ここのコードの一部は、あなたがここに投稿したときに取り組んでいた最後の質問から明らかになり、別の(しかし同様の)問題を解決するはずです。また、/ W4のような高いレベルで警告を有効にすることで大きな利益を得るでしょう。あなたの次の質問(あなたがここに投稿するのが好きなので)では、あなたがここで問題を切り離してしまったので、おそらく[mcve]を作るべきです。 – jaggedSpire

答えて

1

:メンバーOpdracht5 Cへのポインタを作成するために使用 '&'。

vector<string> coulours2 = { "red", "green", "blue", "orange", "purple", "orange", "black", "green" }; 
    sort(coulours2.begin(), coulours2.end()); 
    coulours2.erase(unique(coulours2.begin(), coulours2.end()), coulours2.end()); 
関連する問題