std ::为数组中的每个元素设置

las*_*gar 4 c++ arrays memory-management vector set

我需要一个std::set数组中每个元素的功能.我该如何实现此功能?

我开始在C++中分配std set的动态数组,如下所示:

set<int>* entry;
Run Code Online (Sandbox Code Playgroud)

然后分配:

entry = (set<int>*)malloc(sizeof(set<int>)*32);
Run Code Online (Sandbox Code Playgroud)

没有编译问题,但是当访问任何元素时,运行时失败并出现分段错误:

entry[0].insert(23);
Run Code Online (Sandbox Code Playgroud)

任何帮助都非常感谢.

Tem*_*Rex 11

关于什么

#include <set>
#include <vector>

int main()
{
        std::vector < std::set<int> > entry(32); // std::vector constructor makes 32 calls to std::set<int> constructor
        entry[0].insert(23);
        // std::vector destructor makes 32 calls to std::set<int> destructor
}
Run Code Online (Sandbox Code Playgroud)


Kar*_*elė 5

在c ++中,你用内存分配内存new.与malloc的不同之处在于调用构造函数来初始化内存.

entry = new set<int>[32];
Run Code Online (Sandbox Code Playgroud)

  • 但是当你完成它时不要忘记删除它.通常,最好使用像`std :: vector`这样的容器来为你管理内存. (4认同)