我想初始化一个数组,其中10个值从X开始并递增Y.我不能直接使用range()它来提供最大值,而不是值的数量.
我可以循环执行此操作,如下所示:
a = []
v = X
for i in range(10):
a.append(v)
v = v + Y
Run Code Online (Sandbox Code Playgroud)
但我确定有一个可爱的蟒蛇一个班轮来做这个...
我正在创建一个QAbstractItemModel要显示的子类QTreeView.
我index()和parent()函数创建QModelIndex使用QAbstractItemModel继承功能createIndex,并提供它row,column和data需要.这里,出于测试目的,数据是Python字符串.
class TestModel(QAbstractItemModel):
def __init__(self):
QAbstractItemModel.__init__(self)
def index(self, row, column, parent):
if parent.isValid():
return self.createIndex(row, column, "bar")
return self.createIndex(row, column, "foo")
def parent(self, index):
if index.isValid():
if index.data().data() == "bar": <--- NEVER TRUE
return self.createIndex(0, 0, "foo")
return QModelIndex()
def rowCount(self, index):
if index.isValid():
if index.data().data() == "bar": <--- NEVER TRUE
return 0
return 1
def columnCount(self, index):
return …Run Code Online (Sandbox Code Playgroud) 我创建了C++ 2011的程序实际上使用的C++ 2011的特点:mutex,unique_lock,condition_variable,future和async.
我在Debian Linux 64位盒子上测试过它,它编译并运行就像一个魅力.
现在,我想为Windows编译它.
我尝试过Visual C++ Express 2010,但它不支持C++的新功能.(Visual C++/Studio 2012测试版仅在Windows 8上运行.)
我尝试使用mingw-g ++(4.6)进行交叉编译,但看起来Windows目标不支持这些新功能.(虽然它们支持g ++ - 4.6 for Linux target).
到目前为止,是否有任何(免费?)解决方案为Windows目标编译C++ 2011程序?
我有一些来自硬件的数据.数据以32字节为单位,可能有数百万个块.数据块按以下方式分散在两半中(字母是一个块):
A C E G I K M O B D F H J L N P
Run Code Online (Sandbox Code Playgroud)
或者如果编号
0 2 4 6 8 10 12 14 1 3 5 7 9 11 13 15
Run Code Online (Sandbox Code Playgroud)
首先是所有具有偶数索引的块,然后是奇数块.是否有专门的算法来正确地重新排序数据(字母顺序)?
限制主要是空间.我不想再分配另一个缓冲区来重新排序:再多一个块.但我还想保持低移动次数:一个简单的快速排序就是O(NlogN).对于这种特殊的重新排序情况,O(N)中是否有更快的解决方案?
language-agnostic sorting algorithm optimization performance
我使用Python unittest格式创建了一堆Python测试.
现在我可以运行它们了
python -m unittest discover -s TestDirectory -p '*.py' -v
Run Code Online (Sandbox Code Playgroud)
我找到了所有,然后运行它们.
现在,无论是在Windows上还是在Linux上运行测试,都会有细微差别.实际上,在Windows上,测试按字母顺序运行,而在Linux上,测试运行时没有明显的人类特定的可发现顺序,即使总是相同.
麻烦的是我依靠测试文件的前两个字母来排序测试的执行顺序.并不是说它们必须以特定的顺序运行,而是要进行某种信息测试,在其输出中显示版本数据首先出现在测试运行日志中.
在Linux上,我是否可以按字母顺序运行测试?
只是好奇心问题,格雷码是否定义为基数2以外的基数?
我试着计算基数3,写连续值,注意一次只改变一个trit.我已经能够枚举最多26(3**3-1)的所有值,它似乎工作.
000 122 200
001 121 201
002 120 202
012 110 212
011 111 211
010 112 210
020 102 220
021 101 221
022 100 222
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一问题是,当循环回零时,所有三个trits都会改变.但这只适用于奇数基数.当使用偶数基数循环回零时,只会改变一个数字,如二进制.
我甚至猜测它可以扩展到其他基数,甚至十进制.这可能导致在十点基数计数时的另一个排序...... :-)
0 1 2 3 4 5 6 7 8 9 19 18 17 16 15 14 13 12 11 10
20 21 22 23 24 25 26 27 28 29 39 38 37 36 35 34 33 32 31 30
Run Code Online (Sandbox Code Playgroud)
现在的问题是,有没有人听说过它?有申请吗?或者它只是数学上的狂热?
我希望我的代码根据运行时值使用数组的短版本或长版本(其中包含更多元素)。
constexpr std::array<int, 10> longArray{0,1,2,3,4,5,6,7,8,9};
constexpr std::array<int,4> shortArray{0,3,6,9};
auto const& myArray = useShortArray ? shortArray : longArray;
for( auto n : myArray ) {
// Do the stuff
}
Run Code Online (Sandbox Code Playgroud)
如上所述,有一个错误,因为三元运算符的参数不同。
我怎样才能做到这一点?
唯一的方法是声明两个分配的开始和结束迭代器。但这会导致for在迭代器上使用旧的,并且需要在for块内的每次使用时取消引用迭代器。
auto const& myBegin = useShortArray ? shortArray.begin() : longArray.begin();
auto const& myEnd = useShortArray ? shortArray.end() : longArray.end();
for( auto it = myBegin ; it != myEnd ; ++it ) {
// use *it
}
Run Code Online (Sandbox Code Playgroud)
有没有办法编写它(也许将数组复制到向量?)以避免恢复到开始/结束版本?
我正在编写一个Linux内核模块.它与所有源文件(尽管许可证是专有的)一起发布,以针对正在运行的内核进行编译.安装我的模块(作为.deb包分发)时,它会自动编译和安装.这有效.
问题是在整个Linux系统的常规升级过程中,安装了较新版本的Linux内核.当这样的新版本的内核开始运行时,它没有为我编译我的模块,并且我的应用程序失败了.我想在安装新的Linux内核软件包时编译和安装我的模块.
因此我的问题是:在dpkg安装新的Linux内核软件包时,是否有一种机制可以触发我的软件包中的某些内容来编译和安装我的模块?
同样的问题rpm?
在我所知道和接触过的编程语言中,C++ 看起来是唯一一种同时具有指针和引用的语言。这是真的吗?
Jiffies计数器返回一个大小为四字节的无符号整数.当计数器达到最大值时,它再次从0重新开始.我将用旧值减去最新值以获得持续时间.那么我应该如何考虑这样一种情况:当旧值具有最大值并且新值大于零时,我将得到错误的持续时间?
给定Makefile(在此示例中不需要命令):
program: src0.o src1.o
src0.o: src0.c src0.h
src1.o: src1.c src1.h src0.h
Run Code Online (Sandbox Code Playgroud)
有谁知道一个可以生成点文件的工具?
如下:
digraph "Dependencies" {
"src0.h" -> "src0.o";
"src0.h" -> "src1.o";
"src1.h" -> "src1.o";
"src0.c" -> "src0.o";
"src1.c" -> "src1.o";
"src0.o" -> "program";
"src1.o" -> "program";
}
Run Code Online (Sandbox Code Playgroud)
请注意,此工具也可以足够智能地快捷.o文件,并假装c文件依赖于它们包含的标头.
digraph "Dependencies" {
"src0.h" -> "src0.c";
"src0.h" -> "src1.c";
"src1.h" -> "src1.c";
"src0.c" -> "program";
"src1.c" -> "program";
}
Run Code Online (Sandbox Code Playgroud) 链接器错误:
$ make
g++ -Wall -g main.cpp SDL_Helpers.cpp Game.cpp DrawableObject.cpp `sdl-config --cflags --libs` -lSDL_mixer
/tmp/ccdxzrej.o: In function `Game':
/home/brett/Desktop/SDL/Game.cpp:16: undefined reference to `Player::Player(Game*)'
/home/brett/Desktop/SDL/Game.cpp:16: undefined reference to `Player::Player(Game*)'
collect2: ld returned 1 exit status
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)
main.cpp中:
#include "Game.h"
int main()
{
Game g;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Game.h:
#ifndef BRETT_GAME_H
#define BRETT_GAME_H
#include <cmath>
#include "SDL.h"
#include "SDL_Helpers.h"
#include <vector>
class DrawableObject;
class Game
{
public:
SDL_Surface * screen;
std::vector<DrawableObject*> sprites;
Game();
};
#endif
Run Code Online (Sandbox Code Playgroud)
Game.cpp:
#include "Game.h" …Run Code Online (Sandbox Code Playgroud) c++ ×4
linux ×3
python ×3
algorithm ×2
arrays ×2
math ×2
c++11 ×1
counter ×1
dot ×1
dpkg ×1
for-loop ×1
generator ×1
graphviz ×1
gray-code ×1
linker ×1
linux-kernel ×1
makefile ×1
optimization ×1
performance ×1
pointers ×1
pyqt4 ×1
qvariant ×1
reference ×1
rpm ×1
sorting ×1
stdarray ×1
unit-testing ×1
windows ×1