我试图在c ++中实现vector的插入函数。基本理念是
这是我的代码:
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;。这是什么意思?
答案 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/