如何插入值到向量数组



我试图创建一个接受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的文档吗?

我读你的问题越多,我越觉得你对你在这里试图建立的数据结构感到困惑,我想坐下来想想什么应该是vectorqueue,阅读这些,会让你的生活更容易:)

最新更新