std::map 有没有办法像键的谓词一样“编辑”值?

     2023-02-22     296

关键词:

【中文标题】std::map 有没有办法像键的谓词一样“编辑”值?【英文标题】:Is there a way for std::map to "edit" values like a predicate for the key? 【发布时间】:2010-12-25 01:35:43 【问题描述】:

我想知道是否可以为 std::map 的所有值创建一个谓词之类的东西,这样我就不必在将值插入地图之前对其进行编辑。

我想要的是这样的:

mymap["username"] = " Marlon "; // notice the space on both sides of my name
assert(mymap["username"] == "Marlon"); // no more whitespace

上下文是我正在为 .ini 文件创建一个 std::map 并且我希望它在我想要检索它们时自动从值中删除前导/尾随空格。我已经创建了一个谓词来忽略键中的大小写和空格,所以我想知道是否可以对值执行相同的操作。

【问题讨论】:

在插入或检索值时修剪它们? ***.com/questions/122616/… 不要粗鲁,但为了我要问的问题,请阅读我用粗体写的内容。 你为什么要这个?在插入之前修改它们有那么糟糕吗? 了解在 C++ 中是否可行。了解一种语言的能力不是很好吗? :D C++ 可以做很多事情。这并不是一个好主意。 (至于确定一种语言的能力,我想说知道它是图灵完备的就足够了...... :-)) 【参考方案1】:

我认为您必须遵循重载原则才能达到预期的目标, 试试这个选项,

//map<string,string> testMap; Old Map definition
tMap testMap;

在哪里,

class tMap

        public:

                map<mystring,string> _tMap;

                mystring& operator [] (const char *index)
                
                        return _tMap[index];
                

;

mystring 又是一个可以为 '==' 运算符重载以进行修剪的类。 我知道地图可以实现为一个类(包装器),然后用于实现所需的结果。可能需要更多的努力才能解决这个问题。

【讨论】:

【参考方案2】:

你可以有一个包装器类来包装std::string

    可从 std::string 隐式构造 实现来自std::string 的转换运算符。

您可以在这些函数中的任何一个中动态编辑值。您std::map 可以将包装器作为密钥。

话虽如此,还是更明确一点,而不是聪明一点,并拥有一个具有自己的 get/set 接口的单独 INI 类。

【讨论】:

带有键的 std::map 作为具有三个 int 成员的结构 [重复]

】带有键的std::map作为具有三个int成员的结构[重复]【英文标题】:std::mapwithkeyasastructwiththreeintmembers[duplicate]【发布时间】:2021-06-2906:15:31【问题描述】:我想使用具有三个整数成员的结构作为键。如何重载booloperator<(constCacheKe... 查看详情

使用 C 类型 uuid_t 作为 std::map 中的键的最佳方法是啥?

】使用C类型uuid_t作为std::map中的键的最佳方法是啥?【英文标题】:whatisthebestwaytousetheCtypeuuid_tasakeyinastd::map?使用C类型uuid_t作为std::map中的键的最佳方法是什么?【发布时间】:2011-11-2008:59:00【问题描述】:这是在地图中提供唯... 查看详情

像数组一样访问 std::map 的 std::map

】像数组一样访问std::map的std::map【英文标题】:Accessingastd::mapofstd::maplikeanarray【发布时间】:2014-04-2208:51:15【问题描述】:我已经初始化了std::map的std::map,如下所示:staticstd::map<std::string,std::map<std::string,float>>_ScalingMapF... 查看详情

从满足谓词的无序映射中删除元素

】从满足谓词的无序映射中删除元素【英文标题】:RemoveElementsfromanUnorderedMapFulfillingaPredicate【发布时间】:2012-02-0911:25:11【问题描述】:我想从std::unordered_map(直方图)中删除满足作为lambda表达式给出的预测(计数为零的直方... 查看详情

有没有办法在 Java 流上使用条件谓词?

】有没有办法在Java流上使用条件谓词?【英文标题】:IsthereawaytouseconditionalpredicateonaJavastream?【发布时间】:2021-10-2203:36:36【问题描述】:我使用Java8,我有一个字符串列表,我想提取匹配(或不匹配)正则表达式的字符串:swit... 查看详情

有没有办法通过 QueryDSL 中的谓词 API 急切地获取惰性关系?

】有没有办法通过QueryDSL中的谓词API急切地获取惰性关系?【英文标题】:IsthereawaytoeagerfetchalazyrelationshipthroughthePredicateAPIinQueryDSL?【发布时间】:2013-05-0304:44:36【问题描述】:我正在使用来自SpringDataJPA项目的QueryDslPredicateExecutor... 查看详情

C ++ std :: map:获取特定偏移量的密钥[重复]

...100:54:15【问题描述】:如果我的地图的键是动态生成的,有没有办法在特定的偏移量处获取一个键值,比如第二个键值对的键值?我试图获取地图的随机键值,所以我只是生成了一个随机数并想用这个偏移量提取相应的键。我不... 查看详情

qmap和map哪个效率高?

...式的飞跃。追问但是map做为STL库速度也不错啊,我想知道有没有这两个的对比的资料或者数据?追答引擎不一样,用途不一样,可比性比较小。 查看详情

使用 protobuf 对象作为 std::map 中的键

...象作为键,我需要为std::map提供一个自定义比较器以保持键的顺序。此时我有两个问题:go 查看详情

有没有办法初始化一个不涉及编写构造函数的新结构变量?(代码片段)

我认为我模糊地回忆起一个较新的c++标准(可能是它的c++11,或者14?〜?17??)允许你初始化一个结构,你可以定义一个结构然后在没有它的情况下初始化它必须编写构造函数。Ef。:structtestinta;intb;std::stringstr;;intmain()std::map<in... 查看详情

c ++有没有可能`map.end()`在`std::map`的生命周期内改变

】c++有没有可能`map.end()`在`std::map`的生命周期内改变【英文标题】:c++isthereanypossibilitythat`map.end()`canchangeduringthelifetimeofa`std::map`【发布时间】:2021-02-1806:47:58【问题描述】:只是想知道我是否有这样声明的地图,map<int,int>my_... 查看详情

有没有办法将 Object 中键的存在依赖于外部值?

】有没有办法将Object中键的存在依赖于外部值?【英文标题】:IsthereanywaytodependpresenceofkeyinObjectonexternalvalue?【发布时间】:2020-02-2619:58:55【问题描述】:我想根据标志值在对象中设置一些键例如constourFlag=true//trueorfalsedependsoncasec... 查看详情

有没有办法在多图内联中查找键的数量?

】有没有办法在多图内联中查找键的数量?【英文标题】:IsThereawaytoFindtheNumberofKeysinamultimapInline?【发布时间】:2017-12-2014:33:31【问题描述】:multimap的size报告它包含的值的数量。我对它包含的键数感兴趣。例如,给定multimap&... 查看详情

有没有办法将类型声明中特定键的值用作同一声明中另一个键的类型(在 Typescript 中)?

】有没有办法将类型声明中特定键的值用作同一声明中另一个键的类型(在Typescript中)?【英文标题】:Isthereawaytousethevaluefromaspecifickeyinatypedeclarationasthetypeofanotherkeyinthatsamedeclaration(inTypescript)?【发布时间】:2021-06-1505:51:34【问... 查看详情

在 std::map 和 std::unordered_map 之间进行选择 [重复]

...仍想在实际存在的系统上使用旧的map而不是unordered_map?有没有我无法立即看到的明 查看详情

有没有办法合并两个具有相同键的 JS 对象? [复制]

】有没有办法合并两个具有相同键的JS对象?[复制]【英文标题】:IsthereawaytomergetwoJSobjectswiththesamekeys?[duplicate]【发布时间】:2019-01-1004:19:54【问题描述】:如果我有两个对象:a:1,b:c:1和d:1,b:e:2有没有一种简单的方法可以非破坏... 查看详情

std::unordered_map::find 使用不同于 Key 类型的类型?

...6-01-0417:42:12【问题描述】:我有一个使用字符串类型作为键的unordered_map:std::unordered_map<string,value>map;为string提供了一个s 查看详情

map中怎么让相同键值相加

  使用双重for循环来做,先从map里面去一个键的值,然后再把改建和map里面的所有键比较,如果有就相加,没有就输出;  具体算法如下:  Map<String,Integer>map=newHashMap<String,Integer>();  publicvoidadd(Stringkey,Integervalu... 查看详情