在c ++中实现向量插入函数

时间:2015-05-05 06:26:01

标签: c++ pointers vector

我试图在c ++中实现vector的插入函数。基本理念是

  1. 使用新数组的大小初始化tmp_vector; 2.将原始数据复制到tmp_vector;
  2. 删除旧矢量;复制
  3. tmp_vector to new_vector
  4. 这是我的代码:

    sudo apt-get install pip-python
    

    但是,当我从main

    调用它时,它会给我一个编译错误
    double* Vector::insert(int index, double *newNum, int newNum_size)
    {
        //insert into empty vector
    
        if(size == 0){
    
            //if there's enough memory to hold newNum
            if(newNum_size < capacity)
            {
                for(int i = 0; i < newNum_size; i++)
                {
                    data[i] = newNum[i];
                }
            }
        }
    
        //expand the vector
        if(size != 0){
    
            double *tmp_vector = NULL;
            try{
                tmp_vector = new double(size+newNum_size);
            }
            catch(bad_alloc &e){
                cerr << "Vector::insertion(): " << e.what();
            }
    
            //move the vector to tmp
            for(int i=0; i < size; i++)
            {
                tmp_vector[i] = data[i];
            }
    
            //copy the tmp_vector pointer to newNum pointer
            tmp_vector[size+newNum_size] = *newNum;
    
            //realease the memory from data
            delete[] data;
    
        }
    
        return newNum; 
    
    }
    

    错误是&#34;无法初始化参数类型&#39; double&#39;左右类型&#39; double&#39;&#34;。这是什么意思?

3 个答案:

答案 0 :(得分:2)

你有:

(int index, double *newNum, int newNum_size)
(0,            1.0,                 1)

我认为问题是 1.0 不是双倍[*] ......它只是一个双倍。

答案 1 :(得分:0)

在你的功能签名中:

double* Vector::insert(int index, double *newNum, int newNum_size)

你期待双指针/双打数组,而在insert(0,1.0,1)你传递单双值

此外,我没有看到size变量来自哪里。如果你在函数内声明它/传递给函数,这将是不正确的:tmp_vector = new double(size+newNum_size)你想要的可能是:tmp_vector = new double(size*newNum_size)(后者会分配newNum_size次{{ 1}}内存,即数组的空间。)

答案 2 :(得分:0)

如何使用STL实现?这样可以避免不必要的并发症。 http://www.cplusplus.com/reference/vector/vector/insert/