C++ 调整模板对象的向量大小时出错
我试图创建一个模板对象的向量向量。当我尝试调整内部向量的大小时,错误就会发生,并且我无法确定错误消息的开头或结尾。我不知道它从哪里得到HashTable::Item::Item。有什么建议吗 /usr/include/c++/4.4.6/bits/stl_vector.h(552):错误:构造函数“HashTable::Item::Item[with Key=int,Value=Varvalue]”的实例与参数列表不匹配 调整大小(大小\类型\新大小,值\类型\ x=值\类型() 在以下过程中检测到C++ 调整模板对象的向量大小时出错,c++,templates,hash,vector,resize,C++,Templates,Hash,Vector,Resize,我试图创建一个模板对象的向量向量。当我尝试调整内部向量的大小时,错误就会发生,并且我无法确定错误消息的开头或结尾。我不知道它从哪里得到HashTable::Item::Item。有什么建议吗 /usr/include/c++/4.4.6/bits/stl_vector.h(552):错误:构造函数“HashTable::Item::Item[with Key=int,Value=Varvalue]”的实例与参数列表不匹配 调整大小(大小\类型\新大小,值\类型\ x=值\类型() 在以下过程中检
:
在“main.cc”的第118行实例化“void std::vector::resize(std::vector::size_type={size_t={unsigned long}},std::vector::value_type)[with _Tp=HashTable::Item,_Alloc=std::allocator]”
以下是相关代码:
#定义向量16
类变量值
{
公众:
字符数据[32];
};
模板
类哈希表
{
私人:
类项目
{
公众:
布尔有效;
钥匙;
价值观;
项目*下一步;项目(常数键k,常数值v,项目*b=0,布尔值=true): 键(k),值(v),下一个(b),有效值(val){} })
向量表;
int表大小;
哈希表(const int s):表大小
{
table.resize(表大小);
对于(int i=0;i> p> <代码>项目< /C>不存在默认构造函数,因此需要为Resisid 2提供参数> Auth<代码> vector <代码>。后面的参数应该是“默认”<代码>项目>代码>填充向量。C++中, < P>,当您声明类时,不提供构造函数默认构造函数。(无任何输入参数)是自动生成的。当您使用输入参数声明构造函数时,您不会被授予默认构造函数。在您的情况下,您确实为类项
声明了一个构造函数,该类需要k和v作为输入参数,但您未能给出它们,因此,请为项
声明一个没有输入参数的构造函数或者提供k和v
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 16
class 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
}