【发布时间】:2014-10-19 04:10:45
【问题描述】:
因此,与我之前的问题类似,我想存储一些属性作为我的地图的键,并且值也将是不同的结构。
我现在有一张这样的地图:
std::map<SKey, SValue> m_mMap;
SKey 的结构如下:
Struct SKey
{
string str1,
string str2,
unsigned long long ull1
};
我想实现最快的方法来检索与所有这些变量匹配的迭代器。所以是这样的:
std::map<SKey, SValue>::iterator iter = m_mMap.find(m_sKey);
到目前为止,我要检查地图中是否存在匹配项并检索迭代器如下:
inline bool operator<(const SKey& lhs, const SKey& rhs)
{
return std::tie(lhs.strSrcAddr, lhs.strDstAddr, lhs.ullSequenceNo) < std::tie(rhs.strSrcAddr, rhs.strDstAddr, rhs.ullSeqNo);
}
这是查找 SKey 对象匹配项的正确方法吗?还是有更快的方法?我已经对此进行了测试,但我并不完全相信它有效,因为当左侧和右侧相同时它似乎返回 false。我究竟做错了什么?任何帮助或建议将不胜感激,如果有更快的方法,我将不胜感激,因为我的程序非常注重性能。
谢谢
【问题讨论】:
-
这不是真正的代码。不要发明伪代码。从您的编辑器中复制可编译代码。
-
对不起,我担心共享公司代码......我想我担心太多了
-
这与任何事情都无关。您可以在远离公司的地方打开一个新的空白文件并创建一个最小示例。只是在它编译之前不要发布它,并通过复制粘贴代码来发布它。
-
好的。下次我将发布所有上述代码,但使用正确的变量名。 “这与任何事情都没有关系”似乎是一种真正礼貌的表达“那不是问题”的方式。非常感谢。
-
变量名并不那么重要。拼写
struct没错,但是,是很重要,这就是为什么你绝对应该确保你的代码编译。
标签: c++ map struct find operator-keyword