这是之前关于如何压缩 switch 语句的问题的后续问题。我使用了之前提供的输入,但在如何将我的元素插入 vector 中时遇到错误,但我认为这就是你在 C++ 中插入 vector 的方式?
std::queue<myStruct > myQueue1, myQueue2, myQueue3, myQueue4, myQueue5
void change(float posx, float posy, int idNumber){
myStruct newDir;
newDir.psX = posx;
newDir.psY = posy;
std::vector< std::queue<myStruct> > myVector (5);
myVector.begin();
myVector.insert (myQueue1);
myVector.insert (myQueue2);
myVector.insert (myQueue3);
myVector.insert (myQueue4);
myVector.insert (myQueue5);
if (idNumber >= 1 && idNumber<= 5){
myVector[idNumber-1].push (newDir);
}
}
TIA 感谢任何帮助。
最佳答案
vector::insert()
用于在特定位置插入新元素(因此它需要一个位置参数)。你可能只想要 push_back()
这会将新项目放在 vector 的末尾。为此,您不希望像您那样初始化 vector (这会在 vector 上放置五个空队列);只是默认初始化 vector :
std::vector< std::queue<locaRef> > myVector;
但还有一个问题是,您的 vector 包含类型为 std::queue<locaRef>
的元素,但是你放在 vector 上的队列是 std::queue<MyStruct>
.即使您修复了类型的差异,您也需要记住,放入 vector 的是队列的拷贝,这可能是您想要的,也可能不是您想要的。如果您不想复制,您可能希望 vector 采用某种指针或智能指针指向您的队列对象。
关于c++ - vector 和队列 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289912/