假设我有一个std::vector
(让我们称之为myVec
)大小N
.构造由元素X到Y的副本组成的新向量的最简单方法是什么,其中0 <= X <= Y <= N-1?例如,myVec [100000]
通过myVec [100999]
大小的向量150000
.
如果使用向量无法有效地完成此操作,是否应该使用另一种STL数据类型?
是否有C++标准模板库类提供有效的字符串连接功能,类似于C#的StringBuilder或Java的StringBuffer?
假设我有以下代码:
void* my_alloc (size_t size)
{
return new char [size];
}
void my_free (void* ptr)
{
delete [] ptr;
}
Run Code Online (Sandbox Code Playgroud)
这样安全吗?或者必须在删除前ptr
进行投射char*
?
我正在编写一些代码来在我们的软件中显示条形图(或线条).一切都很顺利.令我难过的是标记Y轴.
调用者可以告诉我他们想要Y标记的标记有多精细,但我似乎仍然坚持要以"有吸引力"的方式标记它们.我无法描述"有吸引力",也许你也不能,但是当我们看到它时我们就知道了,对吗?
所以如果数据点是:
15, 234, 140, 65, 90
Run Code Online (Sandbox Code Playgroud)
并且用户在Y轴上要求10个标签,用纸和铅笔进行一点点处理:
0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250
Run Code Online (Sandbox Code Playgroud)
那里有10个(不包括0),最后一个延伸超过最高值(234 <250),并且它是一个"好"的增量,每个增加25.如果他们要求8个标签,那么30的增量看起来不错:
0, 30, 60, 90, 120, 150, 180, 210, 240
Run Code Online (Sandbox Code Playgroud)
九会很棘手.也许只是使用了8或10,并将其称为足够接近就可以了.当一些观点是否定的时候该怎么办?
我可以看到Excel很好地解决了这个问题.
有没有人知道解决这个问题的通用算法(甚至有些蛮力没问题)?我不必快速做,但它应该看起来不错.
我需要一种'好'的方法来初始化C++中的伪随机数生成器.我发现一篇文章指出:
为了生成类似随机数的数字,srand通常被初始化为一些独特的值,就像那些与执行时间相关的值.例如,函数时间返回的值(在标题ctime中声明)每秒都不同,这对于大多数随机需求来说足够独特.
Unixtime对我的应用来说并不是很有特色.有什么更好的方法来初始化它?奖励点是否可移植,但代码主要在Linux主机上运行.
我正在考虑做一些pid/unixtime数学来得到一个int,或者可能从中读取数据/dev/urandom
.
谢谢!
编辑
是的,我实际上是每秒多次启动我的应用程序而且我遇到了碰撞.
罐子清单只占用太多空间.我可以将其折叠或隐藏吗?
假设NULL
在C 中始终转换为false 是否安全?
void *somePtr = NULL;
if (!somePtr) {
/* This will always be executed? */
}
Run Code Online (Sandbox Code Playgroud)
或者应该明确检查价值NULL
?
通过长堆栈转储,Grails可能有点像熊一样调试.找到问题的根源可能很棘手.我在BootStrap.groovy中做过几次烧伤,例如"def foo = new Foo(a:a,b:b).save()".您最喜欢调试Grails应用程序的技巧是什么?
对于一个简单的链表,其中不需要随机访问列表元素,是否有任何显着的优势(性能或其他)使用std::list
而不是std::vector
?如果需要向后遍历,那么在迭代其元素之前使用std::slist
和reverse()
列表会更有效吗?
我确信有一种快速简便的方法来计算Unix系统上的一列值的总和(使用awk
或类似的东西xargs
),但是编写一个shell脚本来逐行解析行是唯一可行的方法.此刻心灵.
例如,修改下面命令以计算和显示SEGSZ列(70300)总数的最简单方法是什么?
ipcs -mb | head -6
IPC status from /dev/kmem as of Mon Nov 17 08:58:17 2008
T ID KEY MODE OWNER GROUP SEGSZ
Shared Memory:
m 0 0x411c322e --rw-rw-rw- root root 348
m 1 0x4e0c0002 --rw-rw-rw- root root 61760
m 2 0x412013f5 --rw-rw-rw- root root 8192
Run Code Online (Sandbox Code Playgroud)