小编Mem*_*ori的帖子

C++ std :: string append vs push_back()

这真的是一个问题,仅仅是出于我自己的兴趣,我无法通过文档来确定.

我在http://www.cplusplus.com/reference/string/string/上看到append有复杂性:

"未指定,但通常在新的字符串长度中达到线性."

而push_back()具有复杂性:

"未指定;通常摊销常数,但在新的字符串长度中达到线性."

作为一个玩具示例,假设我想将字符"foo"附加到字符串中.将

myString.push_back('f');
myString.push_back('o');
myString.push_back('o');
Run Code Online (Sandbox Code Playgroud)

myString.append("foo");
Run Code Online (Sandbox Code Playgroud)

完全一样的东西?或者有什么区别?您可能认为追加会更有效,因为编译器会知道将字符串扩展指定数量的字符需要多少内存,而push_back可能需要为每次调用保护内存?

c++ string append push-back

21
推荐指数
2
解决办法
3万
查看次数

C++:手动分配内存是否绝对必要?

我对C++编程的一些更高级的方面比较陌生,如果真的有必要在C++中分配内存(无论是通过malloc,new等),我都会遇到一些麻烦.例如在C中,我理解您需要分配内存以具有动态大小的数组或其他任务.在C++中,在我看来并非如此,你可以使用std :: vector,std :: string或其他已经按设计动态调整大小的内置方法.我也明白访问分配的内存比堆栈慢.

那么,有没有时候你必须在C++中分配内存,如果有的话,那些时代的例子是什么?这当然不包括C++代码必须与C程序交互的时间.我们假设程序纯粹用C++编写.

编辑:为了减轻混淆,我理解向量和其他结构正在分配自己的内存,但这是在幕后发生的事情,并不需要程序员使用new,malloc等,它会自动清理.所以我真正想知道的是,是否有必要在C++中手动执行内存管理

c++ memory memory-management

7
推荐指数
3
解决办法
2216
查看次数

gnuplot:标签部分中的斜体

抱歉(可能)基本问题,但我刚刚开始使用 gnuplot。我想要的是创建一个轴标签,其中一部分为斜体。就像是:

xlabel:不是斜体,斜体

我知道设置一个标签来显示斜体很容易(设置 xlabel 字体“Times-Italic”,20),但是是否可以只用斜体显示标签的一部分?

plot gnuplot

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

非常快速地搜索Java中的特定字符

这可能看起来有点像一个愚蠢的问题..也许是这样.但是我有一个我经常使用的功能,并且想知道这是否是最快的工作方式.该功能被使用了很多次,以至于任何速度增加实际上都是显而易见的.它只是检查一个字符是否是一个核苷酸(即:如果一个字符是'A','T','C'或'G'.

private static boolean isValidNucleotide(char nucleotide) {
    nucleotide = Character.toUpperCase(nucleotide);
    if(nucleotide == 'A') return true; 
    if(nucleotide == 'T') return true;
    if(nucleotide == 'C') return true;
    if(nucleotide == 'G') return true;
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这是完成这项工作的最快方式吗?或者您认为值得实现某种索引/地图/其他东西(可能在函数外部执行比较并将此文本复制到代码中的几个位置)?我真的不是Java中这类东西的专家.

java performance search character

3
推荐指数
1
解决办法
291
查看次数