标签: map

C++将类插入到地图容器中

我有一个C++地图,我希望输入我的类作为值,并输入一个字符串作为键.当我尝试时,我得到一个错误,'Scene_Branding' : illegal use of this type as an expression 我非法使用这种类型作为表达式,我似乎无法找出原因.这是一些代码.

 string CurrentScene = "Scene_Branding";
 map<string, Scene> Scenes;
 Scenes.insert(std::make_pair("Scene_Branding", Scene_Branding));  //<-- Illegal Error parameter 2
Run Code Online (Sandbox Code Playgroud)

这里是场景品牌标题..

#ifndef Scene_Branding_H
#define Scene_Branding_H

#include "Scene.h"
#include <iostream>
#include <string>


class Scene_Branding : Scene
{
public:
 Scene_Branding();
 ~Scene_Branding();
 void Draw();
};

#endif
Run Code Online (Sandbox Code Playgroud)

这里是场景标题..

#ifndef Scene_H
#define Scene_H

#include <iostream>
#include <string>

class Scene
{
public:
 Scene();
 ~Scene();
 virtual void Draw();

};

#endif
Run Code Online (Sandbox Code Playgroud)

这里有cpp文件.

场景cpp.

#include "Scene.h"

Scene::Scene()
{

}
Scene::~Scene()
{

}
void …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance class map

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

将构造函数传递给Array.map?

我该怎么做这样的事情:

var a = [1,2,3,4];
a.map(Date.constructor);
Run Code Online (Sandbox Code Playgroud)

此代码在Google V8上引发错误:

SyntaxError: Unexpected number
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

a.map(Date.constructor, Date.prototype)
Run Code Online (Sandbox Code Playgroud)

结果相同.

javascript arrays constructor map prototype-programming

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

为什么python的dict实现为哈希表而std :: map是基于树的?

为什么一种语言使用树而另一种语言使用哈希表来看似相似的数据结构?

c ++的地图与python的字典

一个相关的问题是关于哈希表的性能.
请评论我对下面哈希表的理解.

树保证有O(log n).
哈希表无法保证,除非由于可​​能的冲突而先前已知输入.
随着问题规模越来越大,我倾向于认为哈希表的性能会接近O(n).
因为我没有听说过随着问题规模的增长动态调整其表大小的哈希函数.

因此,哈希表仅对某些问题大小范围有用,这就是大多数数据库使用树而不是哈希表的原因.

c++ python hashtable map

14
推荐指数
3
解决办法
4647
查看次数

为什么std :: map(以及STL中的其他关联容器)没有front()方法?

STL参考似乎使之间的概念上的差异:

  • 'Sequence containers'(数组向量deque forward_list list)一方面
  • 另一方面,'关联容器'(设置multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap).

而且,似乎我们有:

  • 实现begin()返回指向容器中第一个元素的迭代器的方法的所有容器.
  • 只有序列容器有一个front()方法返回对容器中第一个元素的引用.

我的理解是,通过仅取消引用其返回值,可以根据front()方法轻松定义该begin()方法.

因此,我的问题是:为什么不为front()定义方法的所有对象定义begin()方法?(真的应该是每个容器)

(我想从语义的角度来看,从地图中获取第一个元素并不像从矢量中获取第一个元素那样有意义,但我想知道是否有更有效的解释).

c++ containers iterator stl map

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

将java Map转换为自定义key = value字符串

我有TreeMap<String,String>我需要转换为类似URI的字符串,然后返回到Map.我需要设置自定义分隔符.

是否可以为我做任何工具(番石榴,Apache公共?)?我知道,我可以编写简单的循环,但我正在寻找单行程:)

例如

key    value
key1   val1
key2   val2

key1_val1|key2_val2
Run Code Online (Sandbox Code Playgroud)

java map apache-commons guava

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

bash"map"等效:对每个文件运行命令

我经常有一个处理一个文件的命令,我想在目录中的每个文件上运行它.有没有内置的方法来做到这一点?

例如,假设我有一个程序data输出关于文件的重要数字:

./data foo
137
./data bar
42
Run Code Online (Sandbox Code Playgroud)

我想以某种方式在目录中的每个文件上运行它,如下所示:

map data `ls *`
ls * | map data
Run Code Online (Sandbox Code Playgroud)

产生这样的输出:

foo: 137
bar: 42
Run Code Online (Sandbox Code Playgroud)

bash shell map

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

在std :: map中引用为键

假设一些数据结构:

typedef struct {
    std::string s;
    int i;
} data;
Run Code Online (Sandbox Code Playgroud)

如果我在类型映射中data.s添加实例时使用该字段作为键,那么字符串是否会被复制?擦除地图元素是否安全,因为引用将变为无效?datastd::map<std::string&, data>

这些问题的答案也适用于unordered_map

编辑:

这是我目前的解决方案......但是向地图添加迭代器是UGLY:

typedef struct {
    const std::string* s;
    int i;
} data;

std::map<std::string, data> map;
typedef std::map<std::string, data>::iterator iterator;

// add an element to the map
iterator add_element(const std::string& s) {
    std::pair<iterator, bool> p = states.insert(std::make_pair(s, data()));
    iterator i = p.first;
    if(p.second) {
        data& d = (*i).second;
        d.s = &(*i).first;
    }
    return i;
}
Run Code Online (Sandbox Code Playgroud)

c++ reference map

13
推荐指数
2
解决办法
1万
查看次数

擦除std :: map中的特定元素

我想删除我的std :: map中的一些元素.
我写了erase + remove_if技术,我总是使用其他序列容器.
但它不是用地图编译的.为什么?
我怎么能做这个工作?

std::map<int, int> m;

bool foo(const std::pair<int, int>& p)
{
    return p.second > 15;
}

int _tmain(int argc, _TCHAR* argv[])
{
    m.insert(make_pair(0, 0));
    m.insert(make_pair(1, 10));
    m.insert(make_pair(2, 20));
    m.insert(make_pair(3, 30));

    m.erase(
        remove_if(m.begin(), m.end(), foo),
        m.end()); // compile error

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ algorithm containers stl map

13
推荐指数
3
解决办法
1万
查看次数

STL地图与键的向量

我正在处理一些二进制数据,这些数据存储在任意长的无符号整数数组中.我发现我有一些重复的数据,我希望在短期内忽略重复,并删除长期导致它们的任何错误.

我正在考虑在存储之前将每个数据集插入到地图中,但只有在地图中找不到它才会开始.我最初的想法是有一个字符串映射,并使用memcpy作为锤子强制整数进入字符数组,然后将其复制到字符串中并存储字符串.这失败了,因为我的大量数据在相关数据的前面包含多个字节0(又名NULL),因此大部分非常真实的数据都被抛弃了.

我计划下一次尝试std::map<std::vector<unsigned char>,int>,但我意识到我不知道地图插入功能是否有效.

这是可行的,即使不明智,还是有更好的方法来解决这个问题?

编辑

所以有人说我没有弄清楚我在做什么,所以这里有一个更好的描述.

我正在努力生成最小生成树,因为我有许多树包含我正在使用的实际端节点.目标是选择具有最短长度并覆盖所有端节点的树,其中所选择的树彼此最多共享一个节点并且全部连接.我的做法是基于二元决策树,但做了一些改进,希望能够实现更大的并行性.

我没有采用二叉树方法,而是为每个数据集选择了无符号整数的位向量,其中位数为1的1表示包含相应的树.

例如,如果只是树0包含在5树数据集中,我就会开始

00001

从这里我可以生成:

00011

00101

01001

10001

然后可以并行处理这些中的每一个,因为它们中没有一个彼此依赖.我这样做对所有的单树(00010,00100,等),并应,我还没有花时间去正式证明这一点,才能够产生范围内的所有值(0.2 ^ N)的一次而且只有一次.

我开始注意到许多数据集的完成时间比我想象的要长得多,并且启用了调试输出以查看所有生成的结果,并且稍后我确认了一个快速的Perl脚本,我有多个进程生成相同的输出.从那以后,我一直在试图解决在重复从非常小的成功来了,我希望这将很好地工作,足以让我验证是否在没有产生结果,有时,第3天等待计算.

c++ search stl vector map

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

将Google Map SDK添加到iOS6时发送到类的错误无​​法识别的选择器

这是一个单一视图应用程序,我按照链接https://developers.google.com/maps/documentation/ios/start上的说明 将Google地图SDK添加到iOS6.错误是:

unrecognized selector sent to class 0xe2b0
2013-02-07 15:21:29.788 mapApp[2061:12e03] *** Terminating app due to uncaught exception     
'NSInvalidArgumentException', reason: '+[GMSCameraPosition    
cameraWithLatitude:longitude:zoom:]: unrecognized selector sent to class 0xe2b0'
Run Code Online (Sandbox Code Playgroud)

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
   // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;

   //initializing google map api key
   [GMSServices provideAPIKey:@"google's api key goes here"];

   [self.window makeKeyAndVisible];
   return YES;
Run Code Online (Sandbox Code Playgroud)

}

ViewController.m

#import "ViewController.h" …
Run Code Online (Sandbox Code Playgroud)

sdk map ios6 google-maps-sdk-ios

13
推荐指数
2
解决办法
5521
查看次数