- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
#include <ext/hash_map>
using namespace std;
class hash_t : public __gnu_cxx::hash_map<const char*, list<time_t> > { };
hash_t hash;
...
我在使用这个 hash_map 时遇到了一些问题。用作键的 const char* 始终是一个长度为 12 的数字,格式为 58412xxxxxxx。我知道有 483809 个不同的数字,所以这应该是插入所有内容后的 hash_map 大小,但我只得到 193 个条目。
hash_t::iterator it = hash.find(origen.c_str());
if (it != hash.end()) { //Found
x++;
(*it).second.push_front(fecha);
}
else { //Not found
y++;
list<time_t> lista(1, fecha);
hash.insert(make_pair(origen.c_str(), lista));
}
同样的过程使用 python 字典可以完美地工作(我得到正确的条目数)但使用 c++ 甚至不能关闭。是否有可能因为每个键都以 58412 开头(实际上几乎每个键,但不是全部,这就是我不想砍掉这 5 个字符的原因),我遇到了很多冲突?
最佳答案
const char*
对键不利,因为您现在有指针比较而不是字符串比较(另外,您可能有悬空指针,c_str()
的返回值不能长期使用)。
使用 hash_map<std::string, list<time_t> >
相反。
关于c++ - hash_map 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10899197/
在visual C++下,我们有“hash_map”和“hash_set”。在 g++ 中,我们有“stdext::hash_map”和“stdext::hash_set”。它们在各自的性能或其他因素
我在 Ubuntu 中使用 GCC 定义了一个 hash_map stringHashMap。我保证 stringHashFunction 是正确的,因为我可以在 hash_map 中正确使用 str
我知道这应该很容易,但我就是没能消除编译错误。这是我的代码: template struct basic_field_type_map : public hash_map, basic_string>
我正在尝试读取单词列表并将它们连同它们在按字母顺序排序的文件中的位置一起保存在 C++ STL hash_map 中。这个想法是稍后我需要能够判断一个字符串是否是一个词以及它是在另一个词之前还是之后。
#include using namespace std; class hash_t : public __gnu_cxx::hash_map > { }; hash_t hash; ... 我在使
我想要一个 std::hash_map 将(例如)常规 std:string 映射到 多个不同的特化另一个模板类。 这个例子是我想要实现的(虽然它是错误的并且无法编译): template class
hash_map 和 hash_set header 尚未包含在 C++ 标准中,但它们可作为我最近使用的所有编译器的扩展使用。 我想知道在不牺牲可移植性的情况下,在实际代码中我可以在多大程度上依赖这
我想看一个如何正确重写 stdext::hash_compare 的简单示例,以便为我自己的用户定义类型定义新的哈希函数和比较运算符。我正在使用 Visual C++ (2008)。 最佳答案 这就是
我使用以下结构: hash_map> 当我最初用从文本文件中读取的信息填充散列映射时,我可以毫无问题地将元素插入到那些 time_t 列表中。 hash_t::iterator it = hash.f
是否保证当 hash_map/unordered_map 加载相同的项目时,它们在迭代时具有相同的顺序?基本上我有一个 HashMap ,我从一个文件加载它,我定期将有限数量的项目提供给一个例程,之后
我有一个 HashMap 定义为 class KeyType { int key; mutable bool flag; KeyType(int key) : key(key)
我是 c++ 中的 hash_map 的新手。我必须将表转换为散列图。 这就是我在程序中声明和使用 hash_map 的方式 我正在使用 Microsoft Visual Studio。 #inclu
如何将迭代器作为 hash_map 的键? 你会如何在 gcc、Microsoft c++ 下定义它? 例如 vector::iterator i; hash_map::iterato
我有一个多线程应用程序,它使用 C++ STL hash_map 来存储键值对。 hash_map 定义如下: struct eqstr { bool operator()(const strin
我正在比较我编写的一个简单的哈希函数,该函数只是将它乘以一个质数模另一个质数(表大小),结果证明 STL 慢了 100 倍。这是我写的测试方法: stdext:: hash_map hashDict;
我创建了一个小类并尝试将其用作 STL hash_map 中的数据。大量搜索让我知道我需要添加一些东西作为分配器,但到目前为止我还没有看到如何在我的类里面使用 STL 中的默认分配器的示例。有人可以帮
key 的哈希值被计算出来并除以一个质数。一般来说,是否有任何标准素数(比如 32/64 位)? 我的理解是哈希表不可调整大小/不可调整,其内部数组取决于此。如果我有一个只有 5 个元素的哈希表,键空
我想访问 C++ hash_map 的散列值。我试过: __gnu_cxx::hash_map my_table; const hash hh = my_table.hash_funct(); str
我正在开发一个高性能应用程序,其中所有调用都必须合理。我有一张 map ,在每次交易开始时使用一次来进行我想改进的查找。 map 在启动时加载,之后不会改变。 下面映射中的键是一个 std::stri
使用 STL C++ hash_map... class MyKeyObject { std::string str1; std::string str2; bool oper
我是一名优秀的程序员,十分优秀!