在集合中添加对
Adding pair in set
我正在尝试在我的集合中插入一对 int 和 string。我想做的是使用集合实现哈希映射,我使用存储函数存储数字及其对应的字符串,然后使用检索来检索字符串。请提出问题所在,有什么方法可以更有效地完成。错误在商店功能中。我没有写主函数,因为它只是接受输入并调用函数。
typedef pair<int, string> pairs;
pairs p;
set<pairs> s;
set<pairs>::iterator it;
int i=0;
void store(int num,string s)
{
p[i].first=num; //error is while I am using the pair to store the string
p[i].second=s;
s.insert(p[i]);
i++;
}
string retrieve(int num)
{
for(it=s.begin();it!=s.end();++it)
{
pairs m = *it;
if(m.first==num)
{
return m.second;
}
}
}
我的错误:
error: no match for ‘operator[]’ (operand types are ‘pairs {aka std::pair<int, std::basic_string<char> >}’ and ‘int’)
p[i].first=num;
pairs
是 pair<int, string>
的类型别名。 std::pair
does not have an operator[]
overload。
假设您希望 pairs
代表一组对,您需要使 pairs
成为容器 (例如 vector
或 array
).
如评论中Martin Bonner所述,store
中的符号s
指的是string s
参数。更改它以避免与 set s
的标识符冲突。
typedef pair<int, string> pairs[100];
pairs p;
void store(int num, string str)
{
p[i].first=num;
p[i].second=str;
s.insert(p[i]);
i++;
}
我正在尝试在我的集合中插入一对 int 和 string。我想做的是使用集合实现哈希映射,我使用存储函数存储数字及其对应的字符串,然后使用检索来检索字符串。请提出问题所在,有什么方法可以更有效地完成。错误在商店功能中。我没有写主函数,因为它只是接受输入并调用函数。
typedef pair<int, string> pairs;
pairs p;
set<pairs> s;
set<pairs>::iterator it;
int i=0;
void store(int num,string s)
{
p[i].first=num; //error is while I am using the pair to store the string
p[i].second=s;
s.insert(p[i]);
i++;
}
string retrieve(int num)
{
for(it=s.begin();it!=s.end();++it)
{
pairs m = *it;
if(m.first==num)
{
return m.second;
}
}
}
我的错误:
error: no match for ‘operator[]’ (operand types are ‘pairs {aka std::pair<int, std::basic_string<char> >}’ and ‘int’)
p[i].first=num;
pairs
是 pair<int, string>
的类型别名。 std::pair
does not have an operator[]
overload。
假设您希望 pairs
代表一组对,您需要使 pairs
成为容器 (例如 vector
或 array
).
如评论中Martin Bonner所述,store
中的符号s
指的是string s
参数。更改它以避免与 set s
的标识符冲突。
typedef pair<int, string> pairs[100];
pairs p;
void store(int num, string str)
{
p[i].first=num;
p[i].second=str;
s.insert(p[i]);
i++;
}