搞清楚C++集

问题描述:

有人可以给我一些指导或指导我对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

我刚刚点击了你提到的链接......并回答了:) –

你正在命名一个char数组作为“set”。 随后,您将int的数组命名为“set”。

你真正想要做的是如下:

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

的“<>”尖括号传递一个类型到的std ::设置类模板,当你实例化。

+1

:在这种情况下不需要std ::。由于在此使用指令。 – Sumeet

+0

是。真的......只是在习惯中输入它。 – Jmc

+2

@Sumeet它不应该写得很好! –

您已经再次使用类型charset定义了相同的变量set,但这次是int。这是造成这个问题的原因。

尝试声明如下:

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

不要忘记#include <set>

+0

你可以清理一下吗? –

+0

@LightnessRacesinOrbit:完成 – Sumeet

+0

并非真的,no>”这样的标准头文件。“# –

在行

char set[8]; 

你定义一个 “设置” 和char[8]的变量。

在行

int set[9]; 

你定义一个 “设置” 和int[9]另一个变量。 (这应该引起一个编译器错误,因为你不能在同一范围内使用相同的名称定义两个东西)

链接的参考涉及std::set<T>。您可以定义std::set<int>类型的变量(你需要替换的东西对于T之前,你可以使用set)使用语法

std::set<int> my_set;