PriorityQueue如果你不能insertWithPriority,他们为什么命名?它看起来非常类似于堆.有什么不同吗?如果没有区别,那为什么它被命名PriorityQueue而不是Heap?
我不明白为什么以下不起作用:
queue<int*> q;
int counter = 1;
for (int i = 0; i < 3; i++) {
int a[1] = {counter};
q.push(a);
counter++;
}
while (!q.empty()) {
int *top = q.front();
q.pop();
cout << top[0] << endl;
}
Run Code Online (Sandbox Code Playgroud)
它应打印出来:1 2 3,但打印出3 3 3.这是因为每次运行循环后队列中的指针都是相同的.为什么会这样?
由于容器数据类型具有动态大小,我假设它们在堆上分配内存.但他们何时/如何释放这个分配的内存?
以下代码编译并运行但我不确定在较低级别上究竟发生了什么.引用是否只存储被引用对象的地址?如果是这样,两个测试函数都接收一个地址作为参数?或者C++实现是否能够以其他方式区分这些类型?
int main() {
int i = 1;
cout << test(i) << endl;
}
char test(int &i) {
return 'a';
}
char test(int *i) {
return 'b';
}
Run Code Online (Sandbox Code Playgroud)