糟糕的STL标题

时间:2011-12-04 05:51:02

标签: c++ stl header set

我想制作一些STL套装但是当我这样做时告诉我

error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'

意思是我没有包含正确的标题定义(#define <set>),但我有。设置在不同的位置?来源看起来像这样

set<int> playerlist;

头文件是......

#include <iostream>

//#include "winsock2.h"
#include "Ws2tcpip.h"
#include <list>

//#include <windows.h>
#include <process.h>
#include <stdio.h>
#include <string>
#include <fstream>
#include <map>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

#include <set>

2 个答案:

答案 0 :(得分:2)

您需要的是

#include <set>

而不是

#define <set>

在使用该集之前,请在主函数

之前写下以下行
using namespace std;

答案 1 :(得分:0)

通过

#define <set>

我希望你的意思

#include <set>

您还需要以某种方式表明您希望来自set命名空间的std。你可以通过在set前加std::前缀来引用它,来做到这一点:

set<int> playerlist;

或使用using声明告诉编译器每当您引用set时,您的意思是std::set

using std::set;

(也可以编写一个全能using namespace std;声明,表示你总是希望使用std命名空间中的所有内容,但这通常被认为是不好的做法。我之所以提到它只是因为,尽管是不好的做法,但这很常见,所以你很可能会遇到代码。)