小编uro*_*roc的帖子

C++ map <std :: string> vs map <char*> performance(我知道,"再次?")

我正在使用带std::string钥匙的地图,虽然一切正常,但我没有达到预期的性能.我搜索了一些地方来优化和改进一些东西,当一位同事说,"那个字符串键会变慢."

我读了几十个问题,他们一直说:

"不要使用char *键作为键"
" std::string键永远不是你的瓶颈"
"a char *和a 之间的性能差异std::string是一个神话."

我不情愿地尝试了一把char *钥匙而且有区别,差别很大.

我将问题归结为一个简单的例子:

#include <stdio.h>
#include <stdlib.h>
#include <map>

#ifdef USE_STRING

#include <string>
typedef std::map<std::string, int> Map;

#else

#include <string.h>
struct char_cmp { 
    bool operator () (const char *a,const char *b) const 
    {
        return strcmp(a,b)<0;
    } 
};
typedef std::map<const char *, int, char_cmp> Map;

#endif

Map m;

bool test(const char *s)
{
    Map::iterator it = m.find(s);
    return it != m.end(); …
Run Code Online (Sandbox Code Playgroud)

c++ performance dictionary stdmap

41
推荐指数
3
解决办法
5万
查看次数

平衡三元搜索树

如何"平衡"三元搜索树?大多数tst实现都没有解决平衡问题,但建议以最佳顺序插入(我无法控制).

algorithm ternary-tree ternary-search-tree

8
推荐指数
1
解决办法
3434
查看次数

如何将 JavaScript 函数连接到属性信号?

我是 Qml 的新手,在将 javascript 处理程序连接到属性信号时遇到了一些问题。我有一个带有属性和信号的 C++ 对象。

class CppObject : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QVariant value READ getValue WRITE setValue NOTIFY valueChanged)

signals:
    void valueChanged(const QVariant &);
};
Run Code Online (Sandbox Code Playgroud)

这些对象是通过 C++ 工厂方法创建的,我能够将值和更改绑定到 Qml 属性。这一切都有效。

property CppObject obj: cppProxy.PropertyFactory("foo");

Text
{
    x: 100;
    y: 100;
    text: parent.obj.value;
}
Run Code Online (Sandbox Code Playgroud)

对于某些属性,我想将 valueChanged 信号连接到 javascript 函数。我一直在浏览 Qml 文档并尝试了很多东西,但没有任何运气。我认为这样的事情应该有效,但没有

function objEventHandler()
{
    console.log('objEventHandler() ran')
}

Component.onCompleted:
{
    obj.value.valueChanged.connect(objEventHandler);
}
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

qt qml

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