作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在代码中有两个映射。一个存储对和另一个存储,其中值是具有 5 个变量的类,数据类型为字符串、整数、字符串、整数、整数。但是在插入第二个映射期间,我收到错误 g++ 错误:尝试在 map 中插入时,'__x < __y' 中的 'operator<' 不匹配。 (注意第一个映射中的键和值更改为第二个映射中的值,键)
如何解决。
class Values
{
private:
std::string C_addr;
int C_port;
std::string S_addr;
int S_port;
int C_ID;
public:
Values(std::string,int,std::string,int,int);
void printValues();
};
Values :: Values(std::string Caddr,int Cport,std::string Saddr,int Sport,int Cid)
{
C_addr=Caddr;
C_port=Cport;
S_addr=Swaddr;
S_port=Sport;
C_ID=Cid;
}
void Values::printValues()
{
cout << C_addr<<":" <<C_port<<":" << S_addr <<":" <<S_port << ":"<<C_ID <<endl;
}
map<int, Values> items;
map<Values,int> itemscopy;
Values connection (inet_ntoa(Caddr.sin_addr),ntohs(Caddr.sin_port),inet_ntoa(Saddr.sin_addr),ntohs(Saddr.sin_port),CID);
for(unsigned int key=0;key<=30000; )
{
map<int,Values>::const_iterator itemsIterator=items.find(key);
if(itemsIterator==items.end())
{
items.insert(pair<int, Values> (key, connection));
{
map<Values,int>::const_iterator itemsIterator1;
if(itemsIterator1==itemscopy.end())
itemscopy.insert(pair<Values,int> (connection, key));
}
break;
}
else
{
cout<<"already exist";
key=key+1;
}
}
最佳答案
编译器不知道在映射中插入键的顺序。您必须为类值定义一些顺序关系。
您需要为您的类定义运算符 <。例如,您可以通过以下方式或其他方式进行
class Values
{
private:
std::string C_addr;
int C_port;
std::string S_addr;
int S_port;
int C_ID;
public:
Values(std::string,int,std::string,int,int);
void printValues();
bool operator <( const Values &rhs ) const
{
return ( C_ID < rhs.C_ID );
}
};
关于c++ - 错误 : no match for ‘operator<’ in ‘__x < __y’ when trying to insert in two map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248284/
我在迭代集合时遇到段错误。 堆栈跟踪指向: 0x000000081193ccc5 in std::_Rb_tree_increment (__x=0x1) at /libstdc++/src/tr
在代码中有两个映射。一个存储对和另一个存储,其中值是具有 5 个变量的类,数据类型为字符串、整数、字符串、整数、整数。但是在插入第二个映射期间,我收到错误 g++ 错误:尝试在 map 中插入时,'_
这个问题在这里已经有了答案: inlining failed in call to always_inline ‘_mm_mullo_epi32’: target specific option mi
我是一名优秀的程序员,十分优秀!