c++ - vector 和队列 C++

标签 c++ vector

这是之前关于如何压缩 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/

相关文章:

ios - 具有方向和速度的2D矢量数学

C++语言oops

python - 简化在Pybind11中为C++模板类生成包装器类的步骤:模板声明不能出现在 block 作用域中

c++ - WTL 和 CContainedWindow 导致访问冲突

C++ Vector.erase() 导致段错误

c++ - 具有两种类型的模板 vector

C++:混合:boost::any + typeid + pointer:克隆 'generic' 值,如果它是一个指针

c++ - 比较数组c++中的项目

c - 如何在 C 中生成对数间隔数组

c++ - 填充使用未指定维度初始化的 vector vector