在一个 for 循环中创建多个结构
Creating multiple structs in one for loop
所以我有一个类似
for (r = 0; r < k; r++) {
pair p = {r, D[r]};
queue.push(p);
}
其中 pair 定义为
struct pair {
int u;
float d;
}
这是创建 k 对并将其推送到优先级队列的合法方式吗? 即使每次 p 都被覆盖,这些对是否仍以原始形式存在于队列中? 还是队列中已有的每个对都会自动更新为新的 p 值,从而导致队列中充满了同一对的相同副本?
谢谢!
代码很好。
p
被复制到队列中;复制完成后原始文件会发生什么并不重要。
是的,您的代码按原样工作。调用p
的默认复制构造函数,并将副本推送到queue
中。但是,您可以通过添加构造函数来简化代码。如果将pair
定义为:
struct pair {
pair(int u_, float d_) : u(u_), d(d_){}
int u;
float d;
};
然后在您的循环中,您可以简单地执行以下操作:
for (r = 0; r < k; r++) {
queue.push_back(pair(r, D[r]));
}
这样,就更清楚地表明您有意推送副本。另外,请确保在结构声明结束后有一个;
!如果你忘记了,你最终可能会得到一些神秘的编译器错误。
相关文章:
- 创建结构的数组时遇到分段错误
- 如何在 c++ 中创建结构向量的映射
- 为什么我们再次从结构对象创建结构变量?
- 如何在C++中为堆栈动态创建结构?
- 如何创建结构的结构结构,等等嵌套多个结构?
- 创建结构作为枚举类成员
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 创建结构体向量,表达式:向量下标超出范围
- variadic宏来创建结构
- C++类中创建结构的向量
- 如何动态创建 C++ 结构
- 如何在C++循环中创建结构成员
- 如何读取文件中的数据并创建结构向量
- C++从 DLL 创建结构
- 动态数组添加元素而不创建结构变量/对象
- 创建结构并传递IT功能
- c ++ 当我创建结构数组时,如何使用结构数组内的类的参数调用构造函数
- 尝试创建结构对象,在位置0x3FE00000中创建访问冲突写入错误
- 如何创建结构类型数组的地图对象
- 在C 中创建结构数组