Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;向量/优先级队列列表? 为什么C++不允许这样的事情发生?< /P>_C++_List_Stl_Vector_Priority Queue - Fatal编程技术网

C++;向量/优先级队列列表? 为什么C++不允许这样的事情发生?< /P>

C++;向量/优先级队列列表? 为什么C++不允许这样的事情发生?< /P>,c++,list,stl,vector,priority-queue,C++,List,Stl,Vector,Priority Queue,我需要有多个优先级队列,其数量将在运行时确定 这无法编译 std::vector 有更好的方法吗?正确的代码是: std::vector<std::priority_queue<A> > std::vector 请注意,Class不属于A,priority\u queue中有一个下划线,两个直角括号之间需要一个空格(>被解析为右移运算符) 这还要求A小于可比性(如果不是,则必须提供一个供优先级队列使用的比较函数)。这应该可以正常工作。只是语法应该是: std::vec

我需要有多个优先级队列,其数量将在运行时确定

这无法编译

std::vector


有更好的方法吗?

正确的代码是:

std::vector<std::priority_queue<A> >
std::vector 请注意,
Class
不属于
A
priority\u queue
中有一个下划线,两个直角括号之间需要一个空格(
>
被解析为右移运算符)


这还要求
A
小于可比性(如果不是,则必须提供一个供优先级队列使用的比较函数)。

这应该可以正常工作。只是语法应该是:

std::vector<std::priority_queue<A> >
std::vector
(注意结尾附近的空格(“”)。

编译失败时会出现什么错误…?您在代码中到底是如何使用它的?好的,我可能会匆忙发布此消息。Netbeans抱怨(红线)当我写代码的时候?我认为这可能是非法的,不是吗?@cyrux:不,为什么这应该是非法的?我知道类和下划线的事情。我不知道空格的事情。可能是为什么它出了问题。
std::priority\u queue*free\u list;
这合法吗?@cyrux:是的,但是为什么你想要一个指向
priority\u queue的指针?仔细想想,我认为队列数组是不可能的。数组应该有起始地址和结束地址,队列应该增长。这将使其非法?@cyrux,使用
new
new[]创建的对象
在运行时不要更改。
向量
有一个指向内存块的指针,该内存块(可能)大小随数组的大小而变化。
向量只存储指针,指针的大小在运行时不会改变,因此对象的大小不会改变。因此,是的,
优先级队列
的数组是合法和有效的,但您可能最好使用
向量
列表
。这仅当您有一个蹩脚的编译器无法区分运算符
>
和级联模板(例如MSVC 6.0)的结尾时才需要这对任何一个象征主义的C++编译器来说都是没有问题的。哦,所以它是把代码> >代码>作为右移,哇。我在Linux上有NETBeBox。btw@jde:C++03语言根本不支持这一点,只有C++0x会修复它。@jdehaan:错。任何严格符合C++03的编译器都不会接受这一点。谢谢Georg,Axel,我以为这只是一个m编译程序的改进。很好地知道新的C++标准强制执行这项工作。