- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于在 C++ 中向 std::map 插入内容的问题。
这就是我的代码:
stringutils.hh:
...
unsigned long hashSDBM(char *strToHash){
unsigned char* str = new unsigned char[strlen(strToHash) + 1];
strncpy( (char *) str, strToHash, strlen(strToHash) );
unsigned long hash = 0;
int c;
while ((c = *str++)){
hash = c + (hash <<6) + (hash <<16) - hash;
}
return hash;
}
...
哈希表.hh
#include "stringutils.hh"
namespace{
using namespace std;
class MapElement{
private:
char* filename;
char* path;
public:
MapElement(char* f, char* p):filename(f), path(p){}
~MapElement(){
delete [] filename;
delete [] path;
}
char* getFileName(){ return filename; }
char* getPath(){ return path; }
};
class HashMap{
private:
map<long*, MapElement*> *hm;
long hash(char* key);
public:
HashMap(){
hm = new map<long*, MapElement*>();
}
~HashMap(){
delete hm;
}
long put(char* k, MapElement *v);
};
long HashMap::hash(char* key){
return stringutils::hashSDBM(key);
}
long HashMap::put(char* k, MapElement *v){
long *key = new long();
*key = hash(k);
pair<map<long*,MapElement*>::iterator, bool> ret;
ret = hm->insert(std::pair<long*, MapElement*>(key, v));
if(ret.second == false){
cerr<<"Already exists: "<<ret.first->second->getFileName()<<endl;
return *key;
}
cerr<<"INSERTED "<<*key<<endl;
return 0;
}
主.cc:
HashMap *hm = new HashMap();
int main(void){
MapElement *m1;
char a[] = "hello";
char b[] = "world";
m1 = new MapElement(a,b);
hm->put(a, m1);
char c[] = "thats";
char d[] = "a test";
m1 = new MapElement(c,d);
hm->put(c, m1);
char e[] = "hello";
char f[] = "test";
m1 = new MapElement(e,f);
hm->put(e, m1);
return 0;
}
它编译时没有任何错误或警告,当我启动它时,会生成以下输出:
已插入 7416051667693574450
已插入 8269306963433084652
已插入 7416051667693574450
为什么第二个插入键“hello”没有任何效果?
最佳答案
std::map
中的键是唯一的。如果要允许重复键,请使用 std::multimap
。您正在使用的 map::insert 返回一对迭代器和一个 bool
。 bool 指示插入是否实际插入(如果键已经存在则不是)。
关于C++ Aware 复制插入到 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678796/
我会说服我的 friend ,在开发数据库应用程序时,在 Delphi 中使用数据库组件(DB Aware Controls)是迄今为止最好的选择。 这个争论从他很多年前就开始了:直到今天,他仍然相信
在谷歌 Awareness API 指南页面上,提到了上下文类型。 Contextual data includes sensor-derived data such as location (lat
我有一些用 Delphi 编写的业务对象,带有自定义的数据库持久性方案,最终满足了我的需求。太好了。现在是 GUI 实现的时候了。问题就从这里开始了。 如何将我的对象正确绑定(bind)到 GUI?
您如何在Hadoop中定义“机架感知”? 最佳答案 似乎机架感知意味着组件实际上可以区分托管在其上的物理机架服务器。如果您有兴趣,链接会更深入。 https://hadoop.apache.org/d
我很好奇我们许多从事设计或做出设计决策的人是否听说过这个问题。 我知道存在危险的颜色组合,例如绿色 + 红色。这可能是最常见的色盲案例之一。如果红色背景上有绿色文本,反之亦然,有些人将看不到任何内容。
我希望能够在我的 Android 应用程序中查看天气。我实现了它,但它似乎总是在返回条件:[2] 而不是别的,尽管这里已经下了将近一个小时的雨了。 这是它返回的内容: Temp=67.0F/19.44
我正在尝试在多个 session 中使用 Android 感知 API 注册多个位置围栏。但是每次我注册一个新的位置围栏时,它似乎会丢弃我的旧位置围栏并且不再触发它们。 String uniqueId
我认为标题说明了一切......但为了完整起见,这里是完整的问题。 问题 因此,我在 Visual Basic/C#/Anything.net 中有一个包含 Cell 实例的 2 列数组(矩阵或“网格
我想查看全新的 Awareness API。我正在使用 Play Services 9.0.2。文档有 this example : GoogleApiClient client = new Goog
我正在尝试找出一种在线算法,用于“时间感知”指数移动平均线,在不同时间进行采样。通过“时间感知”,我的意思是“给予在一天中相似时间采样的数据更多的权重”,但是(a)我将给出更精确的定义,并且(b)这只
在Struts2拦截器包中,我们可以看到很多XXXAware接口(interface),比如ApplicationAware、CookieAware等。 在Spring框架中,ApplicationC
我正在与 Java 团队一起使用 JavaFX WebView 开发 HTML+CSS+Javascript渲染器。我也想在普通浏览器中使用相同的 HTML+CSS+Javascript,但我希望在样
本文分享自华为云社区《有感知的 Aware Spring Bean》,作者:陈皮的JavaLib。 有感知能力的 Spring Bean 正常情况下,Spring 中的 Bean 对 Spring 是
我有一个带有 openocd 和 arm-none-eabi-gdb 的设置,我正在尝试调试 FreeRTOS fw。 我用以下命令启动 openocd: openocd -f /usr/local/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
遵循 official documentation 中的指南,我尝试使用以下语句将 Awareness API 添加为我的应用程序的依赖项: compile "com.google.android.g
我在手机上使用较低版本 (9.4.0) 的相同代码,但出于某种原因它不能在 RPi3 上运行?我的构建.gradle compile 'com.google.android.gms:play-serv
好吧,我正在测试如何编写一个 C++ 应用程序,它实际上可以读取(和更改)文本文件,同时遵守用于文本的编码。我希望(对于其他 API)将所有读取的文本显式转换为 UTF-8 以供内部使用。与文件中的实
我正在使用 Genesis LifeStyle Pro 子主题。网址:https://www.test.rainerklar.de/blog-fuer-verjuengung-und-gesundhe
我有一个关于在 C++ 中向 std::map 插入内容的问题。 这就是我的代码: stringutils.hh: ... unsigned long hashSDBM(char *strToHa
我是一名优秀的程序员,十分优秀!