队列大小在for语句c ++中重置为0
Size of queue is reset to 0 in for statement c++
我现在不知道如何添加从 vector_data 到 hpp_DE 的 2 个不同数据。在第二次迭代 (i = 1) 中,hpp_DE 的大小重置为 0。
struct Instr;
queue <struct> hpp_DE;
queue <struct> vector_data;
//size of vector is 2;
for (int i = 0; i <= vector_data.size(); i++) {
Instr = vector_date.front();
vector_data.pop();
hpp_DE.push(Instr);
}
它应该在队列hpp_DE中添加两个值,但我只得到一个值;第二个被添加。 vector_data 中的第一个值已从 hpp_DE 中消失。为什么会这样?
在
for (int i = 0; i <= vector_data.size(); i++) {
Instr = vector_date.front();
vector_data.pop();
hpp_DE.push(Instr);
}
vector_data
的大小因 pop 而改变,同时您增加 i 以将其与(修改后的)大小,如果您想复制所有元素,这是错误的。
你用struct作为类型,奇怪
vector_date
必须是 vector_data
有了那个:
int main()
{
queue <int> hpp_DE;
queue <int> vector_data;
vector_data.push(1);
vector_data.push(2);
for (int i = 0; i <= vector_data.size(); i++) {
int v = vector_data.front();
vector_data.pop();
hpp_DE.push(v);
}
cout << hpp_DE.size() << ':';
while (!hpp_DE.empty()) {
cout << ' ' << hpp_DE.front();
hpp_DE.pop();
}
cout <<endl;
}
编译与执行:
/tmp % g++ -pedantic -Wextra v.cc
v.cc: In function 'int main()':
v.cc:13: warning: comparison between signed and unsigned integer expressions
/tmp % ./a.out
2: 1 2
(索引使用 size_t
而不是 int 以移除警告)
但是
#include <queue>
#include <iostream>
using namespace std;
int main()
{
queue <int> hpp_DE;
queue <int> vector_data;
vector_data.push(1);
vector_data.push(2);
vector_data.push(3);
vector_data.push(4);
vector_data.push(5);
for (int i = 0; i <= vector_data.size(); i++) {
int v = vector_data.front();
vector_data.pop();
hpp_DE.push(v);
}
cout << hpp_DE.size() << ':';
while (!hpp_DE.empty()) {
cout << ' ' << hpp_DE.front();
hpp_DE.pop();
}
cout <<endl;
}
打印 3: 1 2 3
如果目标是复制所有只是循环,而 vector_data
不为空进行复制,或者只是将一个分配给另一个?
我现在不知道如何添加从 vector_data 到 hpp_DE 的 2 个不同数据。在第二次迭代 (i = 1) 中,hpp_DE 的大小重置为 0。
struct Instr;
queue <struct> hpp_DE;
queue <struct> vector_data;
//size of vector is 2;
for (int i = 0; i <= vector_data.size(); i++) {
Instr = vector_date.front();
vector_data.pop();
hpp_DE.push(Instr);
}
它应该在队列hpp_DE中添加两个值,但我只得到一个值;第二个被添加。 vector_data 中的第一个值已从 hpp_DE 中消失。为什么会这样?
在
for (int i = 0; i <= vector_data.size(); i++) {
Instr = vector_date.front();
vector_data.pop();
hpp_DE.push(Instr);
}
vector_data
的大小因 pop 而改变,同时您增加 i 以将其与(修改后的)大小,如果您想复制所有元素,这是错误的。
你用struct作为类型,奇怪
vector_date
必须是 vector_data
有了那个:
int main()
{
queue <int> hpp_DE;
queue <int> vector_data;
vector_data.push(1);
vector_data.push(2);
for (int i = 0; i <= vector_data.size(); i++) {
int v = vector_data.front();
vector_data.pop();
hpp_DE.push(v);
}
cout << hpp_DE.size() << ':';
while (!hpp_DE.empty()) {
cout << ' ' << hpp_DE.front();
hpp_DE.pop();
}
cout <<endl;
}
编译与执行:
/tmp % g++ -pedantic -Wextra v.cc
v.cc: In function 'int main()':
v.cc:13: warning: comparison between signed and unsigned integer expressions
/tmp % ./a.out
2: 1 2
(索引使用 size_t
而不是 int 以移除警告)
但是
#include <queue>
#include <iostream>
using namespace std;
int main()
{
queue <int> hpp_DE;
queue <int> vector_data;
vector_data.push(1);
vector_data.push(2);
vector_data.push(3);
vector_data.push(4);
vector_data.push(5);
for (int i = 0; i <= vector_data.size(); i++) {
int v = vector_data.front();
vector_data.pop();
hpp_DE.push(v);
}
cout << hpp_DE.size() << ':';
while (!hpp_DE.empty()) {
cout << ' ' << hpp_DE.front();
hpp_DE.pop();
}
cout <<endl;
}
打印 3: 1 2 3
如果目标是复制所有只是循环,而 vector_data
不为空进行复制,或者只是将一个分配给另一个?