stdmap相关内容
我在编写一些C++代码时遇到了以下现象: 我有一张如下所示的地图: std::map testmap; 此映射全局位于我的程序中,结构定义为: struct test_struct_t { int x; int y; int val; bool operator
..
我有以下代码: 结构节点{诠释一个;诠释 b;};节点节点;节点.a = 2;节点.b = 3;地图啊;aa[1]=1;//行.地图bb;bb[节点]=1;//编译错误. 当我尝试将结构 Node 的实例映射到 int 时,出现编译错误.为什么? 解决方案 对于一个可以用作地图键的东西,你必须能够使用 operator
..
我有一个 std::map 并且我想使用子字符串搜索键.例如,我有以下代码: #include #include #include 使用命名空间标准;typedef std::mapTStrStrMap;typedef std::pairTStrStr对;
..
我正在尝试创建一个map,其中key是一个int,value是一个数组,如下: int red[3] = {1,0,0};诠释绿色[3] = {0,1,0};诠释蓝色[3] = {0,0,1};std::map(GLUT_LEFT_BUTTON,red));//这是第 24 行!colours.insert(std::pair(GLUT_MIDDLE_BUTTON,blu
..
我有以下问题: struct ServerPP {标准::字符串名称;内部标识;int 过期;};std::map>提醒表;int test(std::string email, ServerPP serv){RemindTable[email].insert(serv);//下面这一行编译时出错} g++ 中的错误: 在/usr/include/c++/4.4/string:50 包含的文
..
将 std::map 的引用作为 const 传递是否会导致 [] 运算符中断?使用 const 时出现此编译器错误(gcc 4.2): 错误:没有匹配到‘operator[]’‘地图[名称]’ 这是函数原型: void func(const char ch, std::string &str, const std::map 而且,我要提一下,当我去掉 std::map 前面的 c
..
..
..
显示如何迭代 std::map 的示例通常是这样的: MapType::const_iterator end = data.end();for (MapType::const_iterator it = data.begin(); it != end; ++it) 即它使用 ++it 而不是 it++.有什么理由吗?如果我改用 it++ 会有什么问题吗? 解决方案 测试了一下,我做了三
..
我想遍历 std::map 并根据其内容删除项目.如何做到最好? 解决方案 如果你有一个兼容 C++11 的编译器,这里有一个简单的方法: std::map::iterator itr = myMap.begin();而 (itr != myMap.end()) {如果(应该删除(*itr)){itr = myMap.erase(itr);} 别的 {++itr;}} 这个想法是让迭代
..
我知道 find 方法在 std::map 中找到提供的键并将迭代器返回到元素.反正有没有找到值并获得元素的迭代器?我需要做的是检查 std::map 中是否存在指定的值.我通过循环地图中的所有项目并进行比较来做到这一点.但我想知道有没有更好的方法. 这是我写的 bool ContainsValue(Type_value){布尔发现=假;Map_::iterator it = intern
..
我有一个 std::list>,我知道是按照std::string element排序的. 由于我想做很多基于 std::string 元素的 std::find_if,我相信 std::map 与 lower_bound 和 upper_bound 会更合适.
..
前段时间,我和一位同事讨论了如何在 STL 中插入值 地图.我更喜欢 map[key] = value; 因为它感觉自然且易于阅读,而他更喜欢 map.insert(std::make_pair(key, value)). 我刚问过他,我们都不记得插入更好的原因,但我确信这不仅仅是风格偏好,而是效率等技术原因.SGI STL 参考 简单地说:“严格来说,这个成员函数是不必要的: 它的存在只是
..
是否有与 C++ 的 std::map 等效的 Java Map keySet()? Java keySet() 方法返回 "此映射中包含的键的集合视图." 解决方案 也许以下可能有用: #include #include #include #include #include #include 模板void make_key_set(const std::map& map,std:
..
我有一个 map,我想在地图中找到最小值(右侧).我是这样做的: bool compare(std::pair i, pair j) {返回 i.second
..
我有一个 std::map 用于将值(字段 ID)映射到人类可读的字符串.当我的程序在启动任何其他线程之前启动时,此映射会被初始化一次,之后就再也不会被修改了.现在,我为每个线程提供了这个(相当大的)映射的自己的副本,但这显然是内存使用效率低下并且会减慢程序启动速度.所以我想给每个线程一个指向映射的指针,但这引发了一个线程安全问题. 如果我所做的只是使用以下代码读取地图: std::str
..
我已经确定了四种将元素插入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)); 哪些是首选/惯用的方式?(还有我没有想到的其他方法吗?)
..
初始化静态地图的正确方法是什么?我们是否需要一个静态函数来初始化它? 解决方案 使用 C++11: #include 使用命名空间标准;mapm = {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}}; 使用 Boost.Assign: #include #include "boost/assign.hpp"使用命名空间标准;使用命名空间 boost::
..
我知道引用不是指针,而是对象的别名.但是,作为程序员,我仍然不明白这对我来说究竟意味着什么,即引擎盖下的引用是什么? 我认为理解这一点的最好方法是理解为什么我不能在地图中存储参考. 我知道我需要停止将引用视为对指针的句法支持,只是不知道如何:/ 解决方案 按照我的理解,引用在幕后实现为指针.不能将它们存储在地图中的原因纯粹是语义;您必须在创建引用时对其进行初始化,之后便无法再更
..
有谁知道我在哪里可以找到包装 std::map 并使其线程安全的实现?当我说线程安全时,我的意思是它只提供对地图的串行访问,一次一个线程.最佳情况下,此映射应仅使用标准库和/或 boost 结构. 解决方案 不符合您指定的条件,但您可以查看 待定 容器.所谓的 concurrent_hash_map 允许多个线程同时访问映射中的数据.有一些细节,但一切都很好地记录在案,可以让您了解“并发容
..