STL列表问题C.

时间:2010-12-28 09:38:41

标签: c++ list pointers stl

我在c:

中有列表指针
list<int> * pointer = (list<int> *)malloc(sizeof(list<int>));

当我尝试:

pointer->push_back(1);

我收到错误,因为malloc不调用列表构造函数。我知道用c ++执行此操作:

list<int> * pointer = new list<int>();

但我需要在c?

有人知道这方面的解决方案吗?

2 个答案:

答案 0 :(得分:7)

不,因为这些是不同的语言。只是因为在名称中的公共字母之后只有文本字符串“++”并不意味着什么 - 这与尝试在Python中使用Java容器相当。

如果要使用STL,则必须使用C ++编译器。

答案 1 :(得分:0)

您还可以使用new()的“placement”版本。在malloc()分配的一块内存上调用构造函数。

/* allocate memory using malloc */
list<int> * pointer = (list<int> *)malloc(sizeof(list<int>));

/* invoke the C++ constructor using the placement version of new */
pointer = new(pointer) list<int>();