gpt4 book ai didi

c++ - 将指向数组的指针元素推送到 C++ 中的 std::list

转载 作者:行者123 更新时间:2023-11-28 01:05:54 29 4
gpt4 key购买 nike

我想我可以只使用一个列表,但是此时我只是好奇为什么下面的代码不起作用:

struct treeNode{  
char symbol;
double freq;
int left;
int right;
};

treeNode *tree;
int nOS = 16;
tree = (treeNode *)malloc(sizeof(treeNode) * nOS);
list<treeNode> treeList;

初始化树中的所有元素后,我尝试将它们推送到 treeList 并出现段错误,如果树是 treeNode tree[nOS],则不会发生,但我正在处理未知数量的元素,因此我需要能够使用 realloc,因此使用 malloc:

for (int i = 0; i < nOS; i++) {
treeList.push_back(tree[i]);
}

我尝试将 tree[i] 转换为各种不同的东西:(treeNode)、(const treeNode),但我不知道如何让它工作。谢谢!

最佳答案

我已经完成了this在 ideone 中,它似乎有效:(无段错误)

#include<list>
#include<vector>
#include <stdlib.h>
#include<iostream>

struct treeNode{
char symbol;
double freq;
int left;
int right;
};

int main(int argc, char** argv)
{
treeNode *tree;
int nOS = 16;
tree = (treeNode *)malloc(sizeof(treeNode) * nOS);
std::list<treeNode> treeList;

std::vector<treeNode> symbolList;

for (int i = 0; i < nOS; i++) {
symbolList.push_back(tree[i]);
}

std::cout << symbolList.size();

};

关于c++ - 将指向数组的指针元素推送到 C++ 中的 std::list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161032/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com