我试图做我的作业,基本上就是这样。首先,我尝试将数组的大小加倍(从5到10)然后我尝试将其大小减少一个元素。
这就是我所做的。
int size = 5;
int theKingOfKeepingSizes = size;
string *arr = new string[size];
size = size + 5;
string *arr2 = new string[size];
for (int i = 0; i < theKingOfKeepingSizes; i++)
{
arr2[i] = arr[i];
}
delete[] arr;
arr = arr2;
int newsize = size - 1;
string *arr3 = new string[newsize];
for (int i = 0; i < newsize; i++)
{
arr3[i] = arr2[i];
}
delete[] arr2;
arr2 = arr3;
在你告诉我vector
可以使用之前,我知道。我只是按照说明。我做得对吗?如果我没有,我可以改进什么,和。如果我做得对,我怎么能把它测试?可能有名字?我不确定如何做到这一点。
谢谢!
说明如下:
答案 0 :(得分:1)
在下面解释Andy's code :(我无法发表评论,因为我没有足够的声誉)
int main()
{
int size = 5;
int size_2 = size;
string *a_pt = new string [size]; //Intial size of 5.
此行声明一个指向字符串对象的指针。 *
之前的*a_pt
使其成为指针;如果它是一个普通变量,它只是a_pt
。它还会创建一个大小为5的数组,因为它使用[]方括号内的变量size
。
cout<<size<<endl;
此行用于调试。 cout
表示控制台输出。而endl
表示行尾。这两者之间的任何内容都将在控制台窗口中打印出来。在这里,size
将打印出来,因此您应该在控制台窗口中看到数字5。
要使cout
生效,您必须在#include <iostream>
之前在文件顶部写int main()
for (int i = 0; i <size_2; i++)
{
a_pt[i] = "Aa";
这一行用&#34; Aa&#34;填充数组。在每个元素中a_pt = [Aa, Aa, Aa, Aa, Aa]
cout<<a_pt[i]<<" "; //Proveing size of 5
此行打印出a_pt
的每个元素,因此&#34; Aa&#34;应该打印5次。
}
for (int o = 0; o <size_2; o++)
{ size+=1; } //Increasing size to 10.
size_2 = size;
这部分让我感到困惑,而不是你可以写size_2 = size*2;
cout<<endl<<size<<endl;
for (int g = 0; g < size_2; g++)
{
a_pt[g] = "Bb";
cout<<a_pt[g]<<" "; //Proving size of 10
}
就像其他for
循环一样,这会将每个元素更改为&#34; Bb&#34;,然后打印出每个元素。你应该看到&#34; Bb&#34;现在打印出10次了。
}
答案 1 :(得分:-1)
看起来对我好!但是,如果你的作业要求你加倍,最好写一下:&#34; size = size * 2&#34;
线&#34; arr = arr2&#34;因为你已经删除了变量arr :)
,也没有用处