C++ std::map是否有一种方法可以指向;编辑";值,比如键的谓词?
我想知道是否有可能为std::map的所有值创建一个类似谓词的东西,这样我就不必在将值插入map之前编辑它们 我想要的是这样的:C++ std::map是否有一种方法可以指向;编辑";值,比如键的谓词?,c++,predicate,stdmap,C++,Predicate,Stdmap,我想知道是否有可能为std::map的所有值创建一个类似谓词的东西,这样我就不必在将值插入map之前编辑它们 我想要的是这样的: mymap["username"] = " Marlon "; // notice the space on both sides of my name assert(mymap["username"] == "Marlon"); // no more whitespace 上下文是我正在为一个.ini文件创建一个std::map,我希望它在检索值时自动从值中删除前
mymap["username"] = " Marlon "; // notice the space on both sides of my name
assert(mymap["username"] == "Marlon"); // no more whitespace
上下文是我正在为一个.ini文件创建一个std::map,我希望它在检索值时自动从值中删除前导/尾随空格。我已经创建了一个谓词来忽略键中的大小写和空格,因此我想知道是否可以对值执行相同的操作。您可以有一个包装类来包装
std::string
和
std::string
std::string
的转换运算符话虽如此,它还是要更明确一点,而不是更聪明一点,并且有一个单独的INI类,它有自己的get/set接口。我认为您必须遵循重载原则才能达到预期的目标, 试试这个选项
//map<string,string> testMap; Old Map definition
tMap testMap;
//映射testMap;旧地图定义
tMap测试图;
在哪里,
class tMap
{
public:
map<mystring,string> _tMap;
mystring& operator [] (const char *index)
{
return _tMap[index];
}
};
类tMap
{
公众:
地图(tMap),;
mystring和运算符[](常量字符*索引)
{
返回_tMap[索引];
}
};
mystring还是一个类,可以重载“==”运算符进行修剪。我知道映射可以作为类(包装器)实现,然后用于实现所需的结果。可能需要更大的努力才能解决此问题。在插入或检索值时是否修剪这些值?我不想粗鲁,但为了我要问的问题,请阅读我用粗体写的内容。你为什么想要这个?在插入之前修改它们是否太糟糕了,以了解它是否可能在C++中使用。了解一门语言的能力不是很好吗DC++可以做很多事情。这不是个好主意。(至于确定一种语言的能力,我认为知道它是图灵完备的就足够了…:-)