我试图创建一个接受uint64_t
值的固定大小数组的std::vector
,然后将该向量推入std::queue
。我能够创建的矢量:vector<uint64_t[10]> tmp_data(255);
,如果我理解正确,它是一个具有10个大小为255的数组的向量,并接受uint64_t值
int main()
{
vector<uint64_t[10]> tmp_data(255);
std::queue<std::vector<uint64_t>> vectQueue;
// error: request for member ‘insert’ in ‘tmp_data.std::vector<long unsigned int [10]>::operator[](0)’, which is of non-class type ‘__gnu_cxx::__alloc_traits<std::allocator<long unsigned int [10]>, long unsigned int [10]>::value_type’ {aka ‘long unsigned int [10]’}
tmp_data[0].insert(tmp_data.begin(),7); // I want to insert the value "7" in index 0
tmp_data[1].insert(tmp_data.begin(),6); // 6 in index 1
tmp_data[2].insert(tmp_data.begin(),5); // 5 in index 2
tmp_data[2].insert(tmp_data.begin(),4); // 5 in index 2 (so 4,5)
// then push to queue
vectQueue.push(tmp_data);
}
错误实际上是完全描述性的:
"value"在你的队列中是一个std::vector<uint64_t>
,但你试图插入一个整数。这不起作用-整数不是std::vector<uint64_t>
。我不太清楚你想在这里做什么。也许你想要
std::queue<uint64_t, std::vector<uint64_t>> vectQueue;
?但老实说,你几乎永远不会想要一个std::vector
作为底层容器的队列-这是真正的效率低下,因为您不断地来回复制数据,分配的次数比您应该分配的次数要多,并且没有保存任何东西,因为与std::queue
默认使用的std::deque
相比,每次查找仍然至少间接执行一次内存。简单的
std::queue<uint64_t> vectQueue;
更有意义。你看过std::queue
的文档吗?
我读你的问题越多,我越觉得你对你在这里试图建立的数据结构感到困惑,我想坐下来想想什么应该是vector
和queue
,阅读这些,会让你的生活更容易:)