What is the right way to initialize a QList?
初始化QList的正确方法是什么?我想使这段代码更短:
1 2 3 4 5 | QSplitter splitter; QList<int> list; list.append(1); list.append(1); splitter.setSizes(list); |
但是当我从std :: list使用初始化时,它似乎不起作用:
1 | splitter.setSizes(QList<int>::fromStdList(std::list<int>(1, 1))); |
在后一种情况下,分配器似乎以1:0的比例分配。
您可以使用以下代码:
1 | QList<int> list = QList<int>() << 1 << 1; |
或带有C 11的初始化程序列表:
1 | QList<int> list({1, 1}); |
您可以使用gcc的-std = c 0x或-std = c 11选项启用后者。您还需要相关的Qt版本,其中已将初始化程序列表支持添加到QList构造函数中。
请不要使用
始终使用
来源:https://www.angrycane.com.br/en/2018/06/19/speeding-up-cornercases/