【发布时间】:2021-12-03 06:52:45
【问题描述】:
我正在尝试创建一个具有固定大小数组的std::vector,该数组接受uint64_t 值,然后将该向量推入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);
}
【问题讨论】:
-
问题标题说
push有错误,但问题代码中的错误是insert。这是拼写错误,还是两个调用都导致错误? -
我会写 "a
vector包含 255 个arrays 10ints" -
为了使您的
insert()逻辑有意义,您需要改用std::vector<std::vector<uint64_t>> tmp_data(3);和std::queue<std::vector<std::vector<uint64_t>>> vectQueue;。