2014-01-16 91 views
1

有人可以給我一些指導或指導我對C++ set對象的一個​​很好的教程嗎?搞清楚C++集

我有這樣一段簡單的代碼:

#include <iostream> 

using namespace std; 

int main() 
{ 
    char set[8]; 
    int set[9]; 
    return 0; 
} 

但是,在這種代碼的set比在該參考文獻的set明顯不同? :

http://www.cplusplus.com/reference/set/set/set/

如果我嘗試編譯此代碼我收到以下錯誤:

enter image description here

什麼是困擾我的是,定義中的代碼set當沒有可變/ set的標識符是否已定義?或者這是一個默認的構造函數或什麼的。爲什麼我得到我得到的錯誤?你不能從set創建兩個對象嗎?爲什麼?很抱歉,如果我的問題是新手,但我似乎還沒有找到任何的例子...所以我不明白如何與set工作...

日Thnx任何幫助=)

+2

你看一下例子的'set'文檔頁面上 *你*提到? – Andrei

+0

@Andrei是我做了=)但它看起來完全不同:O?...初始化和所有...但它是同一個對象? – jjepsuomi

+2

我剛剛點擊了你提到的鏈接......並回答了:) –

回答

7

你正在命名一個char數組作爲「set」。 隨後,您將int的數組命名爲「set」。

你真正想要做的是如下:

std::set<char> my_chars; 
std::set<int> my_ints; 

的「<>」尖括號傳遞一個類型到的std ::設置類模板,當你實例化。

+1

:在這種情況下不需要std ::。由於在此使用指令。 – Sumeet

+0

是。真的......只是在習慣中輸入它。 – Jmc

+2

@Sumeet它不應該寫得很好! –

1

您已經再次使用類型charset定義了相同的變量set,但這次是int。這是造成這個問題的原因。

嘗試聲明如下:

set<char> setchar; 
set<int> setint; 

不要忘記#include <set>

+0

你可以清理一下嗎? –

+0

@LightnessRacesinOrbit:完成 – Sumeet

+0

並非真的,no><例如,沒有像'「#include 」這樣的標準頭文件。「# –

4

在行

char set[8]; 

你定義一個 「設置」 和char[8]的變量。

在行

int set[9]; 

你定義一個 「設置」 和int[9]另一個變量。 (這應該引起一個編譯器錯誤,因爲你不能在同一範圍內使用相同的名稱定義兩個東西)

鏈接的參考涉及std::set<T>。您可以定義std::set<int>類型的變量(你需要替換的東西對於T之前,你可以使用set)使用語法

std::set<int> my_set;