C++ 高效存储最多2048个字符的数组?
从另一个来源获取输入;它最多可填充2048个字符的字符串 填充和比较此字符串的最有效方法是什么?-我希望能够很容易地附加到字符串也 以下是我的三次尝试: C型版本C++ 高效存储最多2048个字符的数组?,c++,c,arrays,string,memory-management,C++,C,Arrays,String,Memory Management,从另一个来源获取输入;它最多可填充2048个字符的字符串 填充和比较此字符串的最有效方法是什么?-我希望能够很容易地附加到字符串也 以下是我的三次尝试: C型版本 #包括 #包括 内部主(空){ 查富[2048]; foo[0]='a',foo[1]='b',foo[2]='c',foo[3]='\0';//例如:取自u-input 看跌期权(strcmp(foo,“bar”)?“假”:“真”); } C++风格的版本0 #包括 int main(){ std::字符串foo; 粮食储备(20
#包括
#包括
内部主(空){
查富[2048];
foo[0]='a',foo[1]='b',foo[2]='c',foo[3]='\0';//例如:取自u-input
看跌期权(strcmp(foo,“bar”)?“假”:“真”);
}
C++风格的版本0
#包括
int main(){
std::字符串foo;
粮食储备(2048年);
foo+=“abc”;//例如:取自用户输入
std::cout什么是最有效的取决于您优化的对象。
一些共同标准:
程序速度
程序大小
工作集大小
代码大小
程序员时间
安全
毫无疑问,1和2的国王,在你的例子中可能也是3,是C风格。
对于4和5,C++风格1。
第6点可能是C++风格
<> P>仍然强调了这些目标的适当组合,这对C++选项0是有利的。你理解这两个是如何不同的吗?其中之一可以是代码(<代码>返回<代码> ED,在O(1)中)<代码> STD::String 将数据存储在空闲存储区:数组自动存储。另外,字符串 >全部被处理,并且处理输入量太大而没有定义的行为……如果使用C++,则使用C++。不要试图用C样式语法优化代码思维。“最有效”?第一个版本应该是char foo[2049]当输入字符串长2048个字符时,它会导致不明确的行为。使用STD::string,你将不会面对这个问题,这是一个值得争论的问题。写得好的C++肯定和C一样快/小/缓存友好,而且快速计算表明程序员花费了“优化”的时间。(以及后来维护造成的混乱)比任何花费的计算机时间都要昂贵得多,除非是在非常特殊的情况下VoBrad:嗯,在这种情况下它不会,因为C样式代码甚至不使用动态内存。它的优化程度和C++完全一样,而C++代码使用STD::string(和动态分配)。我当然同意5和6应该是大多数时候最关心的问题。虽然不是太多,但是我们会使用脚本语言。C++的美丽(诅咒)是,如果需要,你可以编写C代码。@ VoBrand:因为OP演示了。
#include <cstdio>
#include <cstring>
int main(void) {
char foo[2048];
foo[0]='a', foo[1]='b', foo[2]='c', foo[3]='\0'; // E.g.: taken from u-input
puts(strcmp(foo, "bar")? "false": "true");
}
#include <iostream>
int main() {
std::string foo;
foo.reserve(2048);
foo += "abc"; // E.g.: taken from user-input
std::cout << std::boolalpha << (foo=="bar");
}
#include <iostream>
int main() {
std::string foo;
foo += "abc"; // E.g.: taken from user-input
std::cout << std::boolalpha << (foo=="bar");
}