stdmap相关内容

无法插入到 std::map (G++)

我有以下问题: struct ServerPP {标准::字符串名称;内部标识;int 过期;};std::map>提醒表;int test(std::string email, ServerPP serv){RemindTable[email].insert(serv);//下面这一行编译时出错} g++ 中的错误: 在/usr/include/c++/4.4/string:50 包含的文 ..
发布时间:2022-01-23 20:58:55 C/C++开发

C++ const std::map 引用无法编译

将 std::map 的引用作为 const 传递是否会导致 [] 运算符中断?使用 const 时出现此编译器错误(gcc 4.2): 错误:没有匹配到‘operator[]’‘地图[名称]’ 这是函数原型: void func(const char ch, std::string &str, const std::map 而且,我要提一下,当我去掉 std::map 前面的 c ..
发布时间:2022-01-20 16:50:17 C/C++开发

迭代地图时++it或it++?

显示如何迭代 std::map 的示例通常是这样的: MapType::const_iterator end = data.end();for (MapType::const_iterator it = data.begin(); it != end; ++it) 即它使用 ++it 而不是 it++.有什么理由吗?如果我改用 it++ 会有什么问题吗? 解决方案 测试了一下,我做了三 ..
发布时间:2022-01-10 15:04:04 C/C++开发

如何使用迭代器删除 std::map 的元素?

我想遍历 std::map 并根据其内容删除项目.如何做到最好? 解决方案 如果你有一个兼容 C++11 的编译器,这里有一个简单的方法: std::map::iterator itr = myMap.begin();而 (itr != myMap.end()) {如果(应该删除(*itr)){itr = myMap.erase(itr);} 别的 {++itr;}} 这个想法是让迭代 ..
发布时间:2022-01-10 14:50:05 C/C++开发

检查值存在于 std::map - C++

我知道 find 方法在 std::map 中找到提供的键并将迭代器返回到元素.反正有没有找到值并获得元素的迭代器?我需要做的是检查 std::map 中是否存在指定的值.我通过循环地图中的所有项目并进行比较来做到这一点.但我想知道有没有更好的方法. 这是我写的 bool ContainsValue(Type_value){布尔发现=假;Map_::iterator it = intern ..
发布时间:2022-01-10 14:21:07 C/C++开发

在 STL 映射中,使用 map::insert 比使用 [] 更好吗?

前段时间,我和一位同事讨论了如何在 STL 中插入值 地图.我更喜欢 map[key] = value; 因为它感觉自然且易于阅读,而他更喜欢 map.insert(std::make_pair(key, value)). 我刚问过他,我们都不记得插入更好的原因,但我确信这不仅仅是风格偏好,而是效率等技术原因.SGI STL 参考 简单地说:“严格来说,这个成员函数是不必要的: 它的存在只是 ..
发布时间:2022-01-09 12:08:26 C/C++开发

只读操作的 std::map 线程安全

我有一个 std::map 用于将值(字段 ID)映射到人类可读的字符串.当我的程序在启动任何其他线程之前启动时,此映射会被初始化一次,之后就再也不会被修改了.现在,我为每个线程提供了这个(相当大的)映射的自己的副本,但这显然是内存使用效率低下并且会减慢程序启动速度.所以我想给每个线程一个指向映射的指针,但这引发了一个线程安全问题. 如果我所做的只是使用以下代码读取地图: std::str ..
发布时间:2022-01-07 11:15:38 C/C++开发

插入地图的首选/惯用方法是什么?

我已经确定了四种将元素插入std::map的不同方式: std::map功能;函数[0] = 42;function.insert(std::map::value_type(0, 42));function.insert(std::pair(0, 42));function.insert(std::make_pair(0, 42)); 哪些是首选/惯用的方式?(还有我没有想到的其他方法吗?) ..
发布时间:2022-01-07 11:06:41 C/C++开发

初始化一个静态 std::map在 C++ 中

初始化静态地图的正确方法是什么?我们是否需要一个静态函数来初始化它? 解决方案 使用 C++11: #include 使用命名空间标准;mapm = {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}}; 使用 Boost.Assign: #include #include "boost/assign.hpp"使用命名空间标准;使用命名空间 boost:: ..
发布时间:2022-01-07 10:50:11 C/C++开发

为什么我不能在 C++ 的 `std::map` 中存储引用?

我知道引用不是指针,而是对象的别名.但是,作为程序员,我仍然不明白这对我来说究竟意味着什么,即引擎盖下的引用是什么? 我认为理解这一点的最好方法是理解为什么我不能在地图中存储参考. 我知道我需要停止将引用视为对指针的句法支持,只是不知道如何:/ 解决方案 按照我的理解,引用在幕后实现为指针.不能将它们存储在地图中的原因纯粹是语义;您必须在创建引用时对其进行初始化,之后便无法再更 ..
发布时间:2022-01-05 11:50:36 C/C++开发

C++ 线程安全映射

有谁知道我在哪里可以找到包装 std::map 并使其线程安全的实现?当我说线程安全时,我的意思是它只提供对地图的串行访问,一次一个线程.最佳情况下,此映射应仅使用标准库和/或 boost 结构. 解决方案 不符合您指定的条件,但您可以查看 待定 容器.所谓的 concurrent_hash_map 允许多个线程同时访问映射中的数据.有一些细节,但一切都很好地记录在案,可以让您了解“并发容 ..
发布时间:2021-12-27 17:54:28 C/C++开发