gpt4 book ai didi

c++ - 调整模板对象 vector 大小时出错

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:00 24 4
gpt4 key购买 nike

我正在尝试创建模板对象的 vector vector 。当我尝试调整内部 vector 的大小时发生错误,但我无法制作错误消息的开头或结尾。我不知道它从哪里得到 HashTable::Item::Item。有什么建议吗?

/usr/include/c++/4.4.6/bits/stl_vector.h(552): error: no instance of constructor "HashTable::Item::Item [with Key=int, Value=Varvalue]" matches the argument list resize(size_type __new_size, value_type __x = value_type())

     detected during:
instantiation of "void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type={size_t={unsigned long}}, std::vector<_Tp, _Alloc>::value_type) [with _Tp=HashTable<int, Varvalue>::Item, _Alloc=std::allocator<HashTable<int, Varvalue>::Item>]" at line 118 of "main.cc"

相关代码如下:

#define VECLEN 16class Varvalue{public:        char data[32];};

template class HashTable{private: class Item { public: bool valid; Key key; Value value; Item *next;
Item(const Key k, const Value v, Item *b = 0, bool val = true): key(k), value(v), next(b), valid(val) {} };

vector<vector<Item> > table;
int tableSize;
HashTable(const int s): tableSize(s)
{
table.resize(tableSize);
for(int i=0; i<table.size(); i++)
table[i].resize(VECLEN); // <<-- error line 118
}

int main()
{
HashTable<int, Varvalue> htable(nkeys);
}

最佳答案

Item没有默认构造函数,因此您需要为 resize 提供 2 个参数一个vector<Item> .后一个参数应为“默认”Item用它来填充 vector 。

关于c++ - 调整模板对象 vector 大小时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com