in
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
не пусто, чтобы сделатьскопировать или просто присвоить одно другому?