无法理解意外的输出。指针没有指向第0个索引号。一串
我一直在尝试寻找以下程序输出的原因。循环从i = 0开始,但是在第0个索引编号处没有显示字符。循环从第一个索引编号开始。
#include <conio.h>
#include <iostream.h>
#include <string.h>
int main()
{
clrscr();
int i, n;
char *x = "Alice";
n = strlen(x);
*x = x[n];
for (i = 0; i <= n; i++)
{
cout << x;
x++;
}
cout << endl << x;
getch();
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:liceicecee
但是我希望输出从'A'开始。
我举办在线编程竞赛,程序的速度就是一切。随着时间的推移,我遇到了 3 种在 C++ 中使用数组概念的方法。比赛的问题通常需要我们创建一个给定大小的动态数组。所以它只是根据输入一次性创建动态数组,我们不会再次调整数组大小。
矢量看起来最花哨,每个人都喜欢它们。但是几天前,其中一个问题在使用向量时给了我 TIME_LIMIT_EXCEEDED 错误。
当我用普通数组实现相同的逻辑时,程序提交成功。
在研究中,我发现使用该push_back()功能比正常使用需要很长时间arr[i]=x;
我对它的性能了解不多。但它看起来是一种更好的处理数组的方式。
我使用动态分配int *arr=new int[given_size];然后正常使用数组。
将数组作为参数传递并不像向量那么简单,但这没什么大不了的。
除此之外,有时我还必须使用 2D 数组,但我总是不确定什么是最快的方法。vector<vector<int>>在某些论坛上被认为很慢,因此使用多维指针也是如此。所以我喜欢使用一个带有 typedef 函数的一维数组来处理它的索引,但是当我必须将一行传递给一个函数时它会变得复杂。
论坛中的大多数答案都基于 OP 试图做的事情,这给出了不同的答案。我想知道的是,使用哪种方法来获得最大速度/效率是最好的和长期的。