标签: unordered-set

C++ STL容器中的NULL指针

不幸的是,我没有完全开发自己开发的程序.我最近注意到运算符上的Visual Studio致命错误 - unordered_set,它是从简单插入指向unordered_set的指针调用的.在查看了本地人之后,我注意到set只有2个元素,其中最后一个是NULL(所以我想这就是它崩溃了).现在问题:unordered_set(或任何其他STL容器)如何(理论上)获得NULL指针作为其元素之一.程序是多线程的,但根据我的评论,这部分代码只能从一个线程访问.谢谢.

为感兴趣的人调用堆栈和部分源代码: http://privatepaste.com/c8e7f35a4e(从Object本身调用PushToProcessed,它将引用传递给自己,因此不能为NULL)

c++ tr1 access-violation unordered-set fatal-error

0
推荐指数
1
解决办法
2309
查看次数

C++获取unordered_set*的字节表示,不带*序列化

在分布式计算设置中,我想向许多节点发送unordered_set.我知道C++中的序列化,例如使用boost::serialization.我对序列化的看法是,unordered_set在接收到序列化数据后,我面临着在每个节点上重建数据结构的成本.

我的想法是为unordered_set编写一个自定义分配器,它分配一个固定大小的连续内存,并在分配后返回起始内存地址.然后我想获取它的字节表示,unordered_set通过线路发送它,并告诉接收节点这个内存块是一个unordered_set.

那会有用吗?你们有没有其他想法如何解决我的问题?或者你有任何相关的指针,例如写这样的分配器?任何反馈都表示赞赏.

谢谢!

c++ serialization distributed-computing unordered-set

0
推荐指数
1
解决办法
131
查看次数

c ++ unordered_set with shared_ptr搜索原始指针

我有一个unordered_set,其中shared_ptrs作为键.这在99%的情况下运行良好,但在同样的情况下我需要从类内搜索集合,我想避免继承enable_shared_from_this,正因为如此.

可以/如何通过原始指针搜索shared_ptr的unordered_set.

c++ unordered-set

0
推荐指数
1
解决办法
361
查看次数

Qt的std :: unordered_set analogue /对应

QT的对口有序关联容器std::mapQMap,std::setQSet,无序关联容器std::unordered_mapQHash.

std::unordered_setQt中我应该用什么来代替?没有QHash< T, void >专业化,也没有QHash< T >.

有计划的模拟吗?

c++ qt containers unordered-set

0
推荐指数
1
解决办法
574
查看次数

unordered_set count 函数返回错误值

为什么有a时set.count('a')输出?13

程序:

bool isAnagram(string s, string t) {

    unordered_set<char> set;

    for(int i=0; i<s.size(); i++){
        set.insert(s[i]);
    }

    cout << endl << set.count('a') << endl;
    return false;
}
Run Code Online (Sandbox Code Playgroud)

输入:

s = 'anagram'
Run Code Online (Sandbox Code Playgroud)

输出:

1
Run Code Online (Sandbox Code Playgroud)

c++ unordered-map unordered-set

0
推荐指数
1
解决办法
127
查看次数

C++:无序容器如何防止重复?

我们以 unordered_set 为例。用于确定两个元素是否相等的默认谓词是std::equal_to<T>(t1,t2),它很简单t1==t2。现在让我们假设对于我已经实现的这个 T 类型operator==(),并不是所有的成员变量都是这个比较的一部分,即两个不同的 T 元素 t1,t2 在比较时可以相等。

如果底层哈希表为这些 t1 和 t2 中的每一个计算不同的哈希,它甚至何时执行t1==t2密钥重复检查?如果有更多的检查,它是如何平均保持恒定时间的?

c++ hash stl unordered-map unordered-set

0
推荐指数
1
解决办法
72
查看次数

C++更新unordered_map中的值,其中键值对的数据类型为int-unordered_set

我正在解决一个 DSA 问题,并在 C++ 标准模板库中观察到一个稍微奇怪的行为:

    vector<int> v = {1, 7, 8, 3, 12};

    unordered_map<int, unordered_set<int>> ump;

    for (int i=0; i<v.size(); i++) {
        unordered_set<int> us;
        us.insert(56);
        ump.insert(mp(v[i], us));
    }
    
    for (int i=0; i<v.size(); i++) {
        unordered_set<int> us = ump.find(v[i])->second;
        us.insert(67);
    }

    for (auto it = ump.begin(); it != ump.end(); it++) {
        cout << it->first << ": ";
        for (auto ait = it->second.begin(); ait!=it->second.end(); ait++) {
            cout << *ait << ' ';
        }
        cout << '\n';
    }

Run Code Online (Sandbox Code Playgroud)

这里的输出是:

    vector<int> v = {1, …
Run Code Online (Sandbox Code Playgroud)

c++ pointers stl unordered-map unordered-set

0
推荐指数
1
解决办法
51
查看次数

如何根据第一个元素在对的 unordered_set 中搜索元素&gt;

unordered_set<pair<int, int> s;
Run Code Online (Sandbox Code Playgroud)

我想执行s.find()操作,但我不知道如何根据第一个元素来实现它。

eg, if my set is: (3,4),(2,5),(5,6),(7,8)

我想找到第一个元素是 7 的第二个元素,我该怎么做。

c++ algorithm unordered-set data-structures

0
推荐指数
1
解决办法
536
查看次数

为什么std :: unordered_set operator ==()N ^ 2的复杂性?

我有两个矢量v1v2类型std::vector<std::string>.两个向量都具有唯一值,如果值比较相等但不依赖于向量中出现的顺序值,则应比较相等.

我假设两组类型std::unordered_set是更好的选择,但我认为它是两个向量.

不过,我想了所需的顺序不区分大小写的比较,我就用operator==std::unordered_set通过复制两个std::unordered_set.非常喜欢这样:

bool oi_compare1(std::vector<std::string> const&v1,
                 std::vector<std::string> const&v2)
{
    std::unordered_set<std::string> tmp1(v1.begin(),v1.end());
    std::unordered_set<std::string> tmp2(v2.begin(),v2.end());
    return tmp1 == tmp2;
}
Run Code Online (Sandbox Code Playgroud)

在分析时我注意到这个功能耗费了大量时间,所以我检查了doc并看到了O(n*n)这里的复杂性.我很困惑,我很期待O(n*log(n)),比如我提出的以下天真的解决方案:

bool oi_compare2(std::vector<std::string> const&v1,
                 std::vector<std::string> const&v2)
{
    if(v1.size() != v2.size())
        return false;
    auto tmp = v2;
    size_t const size = tmp.size();
    for(size_t i = 0; i < size; ++i)
    {
        bool flag = false;
        for(size_t j = i; j < size; ++j)
            if(v1[i] == …
Run Code Online (Sandbox Code Playgroud)

c++ time-complexity unordered-set comparison-operators

-1
推荐指数
1
解决办法
142
查看次数

字符串“abc”是否与 unordered_set 中的“bca”相同?

我想利用 astd::unordered_set来存储一堆字符串。如果我插入字符串"abc", "def", "bca",结果集将包含什么?

set = { {"abc"}, {"def"}, {"bca"} }

或者

set = { {"abc"}, {"def"} }

??

由于字符串"abc""bca"具有相同的字符,即使它们不完全相等。

c++ string unordered-set

-5
推荐指数
1
解决办法
101
查看次数