我必須創建一個函式來獲取對 int 陣列的參考作為引數之一。這個函式應該創建一個動態向量并回傳它的指標。當我編譯這段代碼時,我得到了錯誤:“沒有匹配函式呼叫'func'”。我不知道出了什么問題。馬上,我想問我是否正確地從記憶體中洗掉了動態向量,還是應該以不同的方式撰寫?
#include <iostream>
#include <vector>
using namespace std;
vector<int> *func(int &, int);
int main() {
const int arrSize = 5;
int arr[arrSize] = {1, 3, 5, 7, 9};
vector<int> *ptr_vec = func(arr, arrSize);
delete ptr_vec;
}
vector<int> *func(int &arr, int size){
auto *newVec = new vector<int>;
for(int i = 0; i < size; i ) newVec[i].push_back(arr i);
return newVec;
}
提前致謝
uj5u.com熱心網友回復:
函式的第一個引數是對 int 型別的標量物件的參考
vector<int> *func(int &, int);
你需要寫
vector<int> *func( const int *, int);
同樣在 for 回圈中,您必須撰寫
for(int i = 0; i < size; i ) newVec->push_back(arr[i]);
實際上 for 回圈是多余的。您的功能可能看起來更簡單,例如
vector<int> * func( const int *arr, int size )
{
return new std::vector<int> { arr, arr size };
}
請注意,動態定義向量沒有太大意義。該函式可以通過以下方式宣告和定義
vector<int> func( const int *arr, int size )
{
return { arr, arr size };
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409615.html
標籤:
下一篇:我的函式在C中不能正常作業?
