注册 登录
编程论坛 C++教室

初学者,数组复制的问题

susurra 发布于 2012-02-06 21:26, 723 次点击
如果我想把输入的两个数组x,y复制产生两个新的数组x1、y1,用如下代码尝试复制然后输出复制的两个新数组,可是运行不了,各位能帮我看看哪里出问题了吗?

#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <stdlib.h>


using namespace std;


 
int main ()
{
   cout. setf ( ios :: fixed );
   cout. precision (2);
   int n;   
    char tecla;
    cin>>n;
    vector<string> x(n),x1(n);
    vector<double> y(n),y1(n);
    for (int i=0;i<n;i++)
     {
       cin>>x[i];
       cin>>y[i];  
     }  
    for (int i=0;i<x.size();i++)
     {
       x[i]=x1[i];
       y[i]=y1[i];  
     }  
    for (int i=0;i<n;i++)
      {
       cout<<x1[i]<<"\t"<<y1[i]<<endl;
      }
    cin>>tecla;
    return 0;
}
5 回复
#2
lz10919149992012-02-06 22:20
看看编译器是如抱怨的?
#3
lz10919149992012-02-07 10:27
问题解决了吗?
#4
xingzhian2012-02-07 17:07
int n;   
char tecla;
cin>>n;
vector<string> x(n),x1(n);
vector<double> y(n),y1(n);

以前刚学代码的时候也想过像上面这样,输入一个数后,再用这个数来创建这么大的数组。
后来发现,这样是不行的,要不预编译,先定义一个大小。要不用malloc这样的函数在堆(leap)中动态创建。
因为,栈(stack)要编译前就分配好。
#5
lz10919149992012-02-07 17:18
回复 4楼 xingzhian
不是学代码,是学C++。Vector是可以自动增长的,所以也没有必要指定它的初始大小,我可以给你一段代码:
程序代码:
#include <iostream>
using namespace std;

int main() {
   int n;
   int* a1, *a2;
   cin >> n;
   a1 = new int[n];
   a2 = new int[n];
   for (int i = 0; i < n; ++i) {
      cin >> a1[i];
      a2[i] = a1[i];
   }
   // ...
   delete[] a1;
   delete[] a2;
}

#6
rjsp2012-02-08 08:14
我估计
x[i]=x1[i];
y[i]=y1[i];
其实想要的是
x1[i]=x[i];
y1[i]=y[i];
1