使用Qt我创建了一个QMainWindow,并希望在显示窗口后调用一个函数.当我在构造函数中调用该函数时,在显示窗口之前调用函数(实际上是一个对话框).
我必须缺少一个带头文件的基本概念,因为当我尝试从单独的源文件调用最简单的函数时,我得到一个错误:
main.obj:-1:错误:LNK2019:函数_main中引用的未解析的外部符号"void __cdecl buildDeck(int,int)"(?buildDeck @@ YAXHH @ Z)
加入deck.h
#ifndef DECK_H
#define DECK_H
#include <QString>
void buildDeck(int deckSize, int jokers);
struct card
{
QString suit;
QString color;
int rank;
};
#endif // DECK_H
Run Code Online (Sandbox Code Playgroud)
deck.cpp
#include"mainwindow.h"
#include "deck.h"
void buildDeck(int deckSize, int jokers)
{
int blackRed = deckSize-=jokers;
}
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include "mainwindow.h"
#include "deck.h"
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
buildDeck(10,20);
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误.但是,如果我将函数定义从deck.cpp移动到main.cpp的底部,那么应用程序将构建.
所有文件都包含在同一个项目中,并存储在同一目录中.
其他文件:
.pro文件
QT += core …Run Code Online (Sandbox Code Playgroud) 是否有点像这样做:
namespace status{
enum status{
ok,
error
};
}
Run Code Online (Sandbox Code Playgroud)
并使用它 status::ok
或者我应该这样做:
enum status{
status_ok,
status_error
};
Run Code Online (Sandbox Code Playgroud)
并像这样使用它status_ok?
更新: 使用C++ 11,您现在应该这样做:
enum class status {
ok,
error
};
Run Code Online (Sandbox Code Playgroud)
并使用这样的: status::ok
我正在尝试使用python来创建随机二进制文件.这就是我已经拥有的:
f = open(filename,'wb')
for i in xrange(size_kb):
for ii in xrange(1024/4):
f.write(struct.pack("=I",random.randint(0,sys.maxint*2+1)))
f.close()
Run Code Online (Sandbox Code Playgroud)
但它非常慢(我的3.9GHz SSD磁盘机上size_kb = 1024,为0.82秒).一个很大的瓶颈似乎是随机int生成(用0替换randint()会将运行时间从0.82s减少到0.14s).
现在我知道有更有效的方法来创建随机数据文件(即dd if =/dev/urandom)但是我试图解决这个问题是为了好奇...有没有明显的方法来改善它?
我用谷歌搜索了,并没有看到哪里得到pylab.
我错过了什么?
谢谢!
我见过人们提到可以在O(1)时间内从unordered_set中获取随机元素.我试图这样做:
std::unordered_set<TestObject*> test_set;
//fill with data
size_t index = rand() % test_set.size();
const TestObject* test = *(test_set.begin() + index);
Run Code Online (Sandbox Code Playgroud)
但是,unordered_set迭代器不支持带整数的+. begin可以给出一个size_t参数,但它是一个桶而不是一个元素的索引.随机挑选一个桶然后在其中随机挑选一个元素将导致非常不平衡的随机分布.
适当的O(1)随机访问的秘诀是什么?如果重要,这是在VC++ 2010中.
问题:我需要为容器获取一个随机元素,并将其从该容器中删除.容器不需要排序.我不在乎订单.
O(1)但只删除它O(N)O(1)但只能获取随机元素O(N)所以我提出了一个创建自定义向量的想法,允许您通过O(1)+复杂的索引删除任何元素.我们的想法是交换最后一个元素和你想要删除的元素pop_back().如果你需要删除最后一个元素 - 只是pop_back().向量的顺序不一样,但是你得到一个快速删除方法.
我可以理解deque的索引访问速度较慢,删除复杂性较差,然后我的解决方案,但我不是100%肯定.
我很好奇有没有随机访问和元素删除的数据结构O(1)或O(logN)索引或mb值?
假设我有一个带有两个函数的C++类
class MyClass
{
bool Foo(int val);
bool Foo(string val);
}
Run Code Online (Sandbox Code Playgroud)
是否可以像这样使用三元运算符
MyClassInstance->Foo(booleanValue?24:"a string");
Run Code Online (Sandbox Code Playgroud)
并具有不同的函数MyClass调用取决于值booleanValue?
import csv
a=[]
with open('large.csv','w') as f1:
writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)
for i in range(1000000):
for j in range(i+1):
a.append(i+j*0.2)
#print i,j,a
#want to write into same csv file???
'''like
0 1 2......999999
0 0.0
1 1.0 1.2
2 2.0 2.2 2.4
. .....
. .....
999999
'''
a=[]
Run Code Online (Sandbox Code Playgroud)
我这样做,以避免两次相同的计算研究和列表"A"将变得很大,我必须重新初始化.所以(外循环的一个迭代后),我想要的清单(前再次获得初始化)写入CSV以上述方式提交,但我无法这样做......请帮忙.
MongoDB noob在这里......
我有一个如下集合......
> db.students.find({_id:22},{scores:[{type:'exam'}]}).pretty()
{
"_id" : 22,
"scores" : [
{
"type" : "exam",
"score" : 75.04996547553947
},
{
"type" : "quiz",
"score" : 10.23046475899236
},
{
"type" : "homework",
"score" : 96.72520512117761
},
{
"type" : "homework",
"score" : 6.488940333376703
}
]
}
Run Code Online (Sandbox Code Playgroud)
如何通过mongo shell仅显示测验分数?
c++ ×6
python ×3
qt ×2
big-o ×1
c++11 ×1
csv ×1
enums ×1
matplotlib ×1
mongo-shell ×1
mongodb ×1
namespaces ×1
performance ×1
python-2.7 ×1
random ×1
stl ×1
vector ×1