【发布时间】:2018-06-26 05:42:41
【问题描述】:
我有一个这样的结构:
struct Node {
void *data;
Node *l, *r;
}
我应该使用函数:
void push(Queue *q, void *data, int priority) {
Node *n = new Node;
n->data = data;
// place node in queue
}
我试图在循环中读取字符串,但之后我得到了节点中所有值都相似的队列。
void read_input(Queue *q) {
string s;
int p;
cin >> s >> p;
// problem is here
push(q, (void *) s.c_str(), p);
}
void main() {
Queue *q = create();
for (int i = 0; i < 5; i++) {
read_input(q);
}
}
我该如何解决这个问题?为什么string s 总是有相同的地址?
【问题讨论】:
-
这不是c,那你为什么要这样标记它?
-
什么是
create()? -
你能贴出推送的代码吗,我想你是在为数据分配地址,而不是在其中分配和复制字符串
-
什么是
Queue?发布minimal reproducible example。 -
@MaximSamburskiy 您正在使用 C++,因此您不必费心编写自己的容器,但您应该使用 std 容器,在您的情况下可能是
std::queue。
标签: c++ queue void void-pointers