标签: stdmap

const和非const键有什么区别?

以下两行有什么区别?

map<int, float> map_data;
map<const int, float> map_data;
Run Code Online (Sandbox Code Playgroud)

c++ key stdmap key-value language-lawyer

70
推荐指数
3
解决办法
9482
查看次数

如何迭代在C++中充满字符串的std :: map

我有以下问题涉及迭代使用定义的字符串的关联数组std::map.

-- snip --
class something 
{
//...
   private:
      std::map<std::string, std::string> table;
//...
}
Run Code Online (Sandbox Code Playgroud)

在构造函数中,我使用与字符串数据相关联的字符串键对填充表.在其他地方我有一个方法toString返回一个字符串对象,该对象包含表对象中包含的所有键和相关数据(如key =数据格式).

std::string something::toString() 
{
        std::map<std::string, std::string>::iterator iter;
        std::string* strToReturn = new std::string("");

        for (iter = table.begin(); iter != table.end(); iter++) {
           strToReturn->append(iter->first());
           strToReturn->append('=');
           strToRetunr->append(iter->second());
           //....
        }
       //...
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我收到以下错误:

error: "error: no match for call to ‘(std::basic_string<char,
    std::char_traits<char>, std::allocator<char> >) ()’".
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释失踪的是什么,我做错了什么?hash_map在用户必须定义​​散列函数以便能够hash_mapstd::string对象一起使用的情况下,我才发现有关类似问题的一些讨论.在我的情况下也可能是类似的东西?

c++ dictionary iterator stdmap std

62
推荐指数
2
解决办法
14万
查看次数

合并两个STL贴图

如何将两个STL地图合并为一个?它们都具有相同的键值类型(map).如果键有重叠,我想优先考虑其中一个地图.

c++ maps merge stl stdmap

62
推荐指数
4
解决办法
5万
查看次数

std :: maps以用户定义的类型作为键

我想知道为什么我不能将STL映射用于用户定义的类.当我编译下面的代码时,我得到这个神秘的错误消息.这是什么意思?此外,为什么它只发生在用户定义的类型?(当用于密钥时,原始类型是可以的)

C:\ MinGW\bin ..\lib\gcc\mingw32\3.4.5 ........\include\c ++\3.4.5\bits\stl_function.h ||在成员函数`bool std :: less <_Tp> :: operator()(const _Tp&,const _Tp&)const [with _Tp = Class1]':

C:\ MinGW\bin ..\lib\gcc\mingw32\3.4.5 ........\include\c ++\3.4.5\bits\stl_map.h | 338 |从`_Tp&std ::实例化map <_Key,_Tp,_Compare,_Alloc> :: operator [](const _Key&)[with _Key = Class1,_Tp = int,_Compare = std :: less,_Alloc = std :: allocator>]'|

C:\ Users\Admin\Documents\dev\sandbox\sandbox\sandbox.cpp | 24 |从这里实例化|

C:\ MinGW\bin ..\lib\gcc\mingw32\3.4.5 ........\include\c ++\3.4.5\bits\stl_function.h | 227 |错误:不匹配'运算符<'in'__ x <__y'| || ===构建完成:1个错误,0个警告=== |

#include <iostream>
#include <map>

using namespace std;

class Class1
{
public:
    Class1(int id);

private:
    int id; …
Run Code Online (Sandbox Code Playgroud)

c++ containers dictionary stl stdmap

60
推荐指数
5
解决办法
9万
查看次数

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

我想std::map根据内容循环并删除项目.如何做到最好?

c++ iterator stdmap map

57
推荐指数
3
解决办法
8万
查看次数

当我应该使用std :: map :: at来检索map元素

我已经在stackoverflow上阅读了关于web和问题的不同文章,但对我来说,目前尚不清楚是否有更好的std::map::at用于检索map元素的情况.

根据定义,std::map::at

返回对使用键k标识的元素的映射值的引用.

如果k与容器中任何元素的键不匹配,则该函数抛出out_of_range异常.

仅限于我std::map::at在100%确定存在具有特定键的元素时值得使用的情况,否则您应该考虑异常处理.

  1. 有没有哪种情况std::map::at被认为是最有效和优雅的方式?在什么情况下你会建议使用std::map::at
  2. 我是对的,map::find()当有可能没有带有这样一个键的元素时,最好使用它吗?并且map::find()它更快,更好的方法?
if ( map.find("key") != map.end() )
{
    // found 

} else
{
    // not found
}
Run Code Online (Sandbox Code Playgroud)

PS

map::operator[] 有时可能很危险,因为如果一个元素不存在,那么它会插入它.

编辑:链接以某种方式相关链接1 链接2 链接3 链接4 链接5 链接6

c++ stdmap c++11

46
推荐指数
4
解决办法
2万
查看次数

从地图中获取价值

我有一张地图,即valueMap

typedef std::map<std::string, std::string>MAP;
MAP valueMap;
...
// Entering data.
Run Code Online (Sandbox Code Playgroud)

然后我通过引用将此映射传递给函数

void function(const MAP &map)
{
  std::string value = map["string"];
  // By doing so I am getting an error.
}
Run Code Online (Sandbox Code Playgroud)

如何从地图中获取值,该值作为函数的引用传递?

c++ dictionary stdmap

45
推荐指数
2
解决办法
11万
查看次数

检查std :: map中是否存在 - count vs find

因此,似乎有两种通常可接受的方法来确定密钥是否存在于std :: map中:

map.find(key) != map.end()
map.count(key) > 0
Run Code Online (Sandbox Code Playgroud)

一个比另一个更有效吗?具体来说,count()的概念可以被解释为意味着该方法将迭代每个键,计算总计数(并且由于std :: map的定义,总计数将始终为0或1).count()保证在匹配后"停止",以与find()相同的复杂度运行吗?

c++ stl stdmap map

43
推荐指数
3
解决办法
2万
查看次数

std :: map中的最后一个键

我正在寻找std :: map的最高键值(由比较运算符定义).

这是保证

map.rbegin()->first
Run Code Online (Sandbox Code Playgroud)

(我在反向迭代器上有点不稳定,在std :: map的实现中有多少自由度)

如果没有,请告知.我无法改变数据结构.

c++ iterator stdmap

42
推荐指数
4
解决办法
4万
查看次数

我怎样才能估计std :: map的内存使用情况?

例如,我有一个已知sizeof(A)和sizeof(B)的std :: map,而map里面有N个条目.你会如何估计它的内存使用量?我会说它就像是

(sizeof(A) + sizeof(B)) * N * factor
Run Code Online (Sandbox Code Playgroud)

但是因素是什么?可能不同的公式?

也许要求上限更容易?

c++ memory stl stdmap

42
推荐指数
4
解决办法
3万
查看次数

标签 统计

c++ ×10

stdmap ×10

stl ×4

dictionary ×3

iterator ×3

map ×2

c++11 ×1

containers ×1

key ×1

key-value ×1

language-lawyer ×1

maps ×1

memory ×1

merge ×1

std ×1