标签: qmap

使用for迭代QMap

我有一个QMap对象,我正在尝试将其内容写入文件.

QMap<QString, QString> extensions;
//.. 

for(auto e : extensions)
{
  fout << e.first << "," << e.second << '\n';
}  
Run Code Online (Sandbox Code Playgroud)

为什么我得到: error: 'class QString' has no member named 'first' nor 'second'

e不是类型QPair

c++ qt qmap c++11

50
推荐指数
5
解决办法
7万
查看次数

分配给嵌套的QVariantMap

#include <QtCore/QCoreApplication>
#include <QVariant>
#include <QtDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QVariantMap map;
    map["foo"] = QVariant(QVariantMap());
    map["baz"] = "asdf";
    qvariant_cast<QVariantMap>(map["foo"])["bar"] = "a";

    qDebug() << qvariant_cast<QVariantMap>(map["foo"])["bar"].toString();
    qDebug() << map["baz"].toString();

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

我试图在嵌套的QVariantMap中分配一个QVariant.第一个qDebug()不输出任何内容,但第二个输出"asdf"如预期的那样.如何将嵌套变量映射中的"bar"键分配给值?

c++ qt qvariant qmap

10
推荐指数
1
解决办法
8646
查看次数

从QMap中删除所有值

我有一个QMap包含指向类对象的指针,使用分配new.我需要删除所有这些指针.使用QMap进行此操作的正确方法是什么?我可以这样做:

QList<ClassName*> allVals = map.values();
for (QList<ClassName*>::iterator it = allVals.begin(), endIt = allVals.end(); it != endIt; ++it) {
    delete *it;
}
Run Code Online (Sandbox Code Playgroud)

但有没有更好的方法做同样的事情?

c++ qt pointers qmap

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

QMap是否支持自定义比较器功能?

我无法找到一种方法来设置自定义比较器函数QMap,就像我可以std::map(typename _Compare = std::less<_Key>它的模板参数的一部分).

QMap没有办法设置一个?

c++ qt qmap

10
推荐指数
1
解决办法
2984
查看次数

QMap :: contains()VS QMap :: find()

我经常看到如下代码:

if(myQMap.contains("my key")){
    myValue = myQMap["my key"];
}
Run Code Online (Sandbox Code Playgroud)

理论上它在QMap中执行两次查找.

我的第一反应是它应该由以下代替,它只执行一次查找,应该快两倍:

auto it = myQMap.find("my key");
if(it != myQMap.end()){
    myValue = it.value();
}
Run Code Online (Sandbox Code Playgroud)

我想知道QMap是否会自动为我做这个优化?换句话说,我想知道QMap是否保存了找到的最后一个元素的位置QMap::contains()并在执行下一次查找之前先检查它?

c++ qt qmap

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

如何深度复制QMap和其他Qt容器

一般来说,深度复制Qt容器的正确方法是什么?我并不担心递归地深度复制容器,尽管解决这些问题会有所帮助.

c++ qt qt4 deep-copy qmap

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

为什么qmap使用skiplist而不是ob rb-tree?

我觉得为什么QMap实现了跳过列表数据结构而不是rb-tree?有关并发数据结构和跳过列表优势的非常有趣的SO线程比rb-tree,优点和缺点.它确实是非常有用的链接,但QMap不是线程安全的,它不会进行任何互斥锁定,以便开箱即用同步访问.它需要包装或子类化.

对我来说,编写"手工制作"的滑雪列表而不是rb-tree并不简单,所以这也不是很明显.

在非线程安全的Qt容器的上下文中是否有任何kill-feature?

Tnx提前.

c++ qt red-black-tree qmap skip-lists

7
推荐指数
1
解决办法
664
查看次数

QMap :: insertMulti还是QMultiMap?

我应该在QMap :: insertMulti和QMultiMap之间使用什么来处理:

2 - > abc
2 - > def
3 - > ghi
3 - > jkl

进入2个解决方案的区别是什么?

c++ qt qmap qmultimap

6
推荐指数
2
解决办法
6209
查看次数

QMap/QHash operator []返回引用有效性

我想知道对Qt容器内的值的引用有多长,特别是a QHash或a QMap是有效的.有效我的意思是,如果在插入或删除其他元素后仍保证指向map/hash中的正确位置.

让我们以下代码:

QHash<char,int> dict; // or QMap<char,int> dict;
dict.insert('a', 1);
int& val(dict['a']);

dict.insert('b', 2);

val = 3;             // < will this work or lead to a segfault
Run Code Online (Sandbox Code Playgroud)

将在最后一行的值设置正确地更新与相关联的值a3还是会导致段错误还是会是不确定的(所以有时候工作,段错误其他时间,具体取决于数据结构是否必须进行内部重组,像调整散列表数组).是行为同为QMapQHash,或将一个工作和其他不?

c++ qt dictionary qmap

6
推荐指数
1
解决办法
1327
查看次数

QMap 但不按键排序

我需要像 QMap 这样的结构,但不需要对键进行排序,所以如果我先在那里插入项目,我可以算出该项目将位于所有其他项目之前。并在指定元素之前或之后插入对。Qt有这样的吗?

c++ qt qmap data-structures

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