2015-10-08 22 views
0

我的问题是我想添加一个元素而不询问用户的元素。我只想添加一个元素,当我打印所有元素时,包括添加的一个打印元素,而不是首先询问元素的位置和所有元素。在无位置的数组中添加一个元素

int num,pos; 
cout<<"Enter another element: "; 
cin>>num; 
cout<<"Enter position number: "; 
cin>>pos; 

cout<<endl; 


for(int i=po; i>=pos; i--) 
    a[i+1]=a[i]; 

a[pos]=num; 
po++; 

cout<<"New Array: "<<endl; 
for(int i=0; i<po; i++) 
    cout<<"Element at position "<<i+1<<" is "<<a[i]<<endl; 
+1

什么阻止你完成这个目标? – Caleb

+0

逻辑。 如果我删除行 a [pos] = num; po ++; 插入的值发生变化。 –

+0

如果你想在数组中插入一个元素,你当然必须移动当前那里的元素,这可能需要移动其他元素等等。如果您有一个包含5个元素的数组,并且您想要在索引3处插入一个新元素,则必须将索引4和3处的元素分别移至索引5和4。你最好使用'std :: vector'容器,这使得插入变得简单。 – Caleb

回答

0

如果你想,当你插入项目在运行调整大小的阵列状容器,使用std::vector。要自己实现这样的东西,在一个固定大小的数组中,你需要做记帐。跟踪您当前的插入位置,以便知道哪些元素已被使用,哪些是免费的。

另外,如果你想在前面插入,使用链接列表。或者使用添加到最后的数组,因此元素以相反的顺序存储。为了打印,环以相反的顺序在阵列上(从pos0。)

洗牌的每一个元素插入一个新的第一个元素是缓慢的,并且这样做,在通常情况下是一个坏的设计。

相关问题