gpt4 book ai didi

c++ - 将 vector 与函数一起使用,指针问题

转载 作者:行者123 更新时间:2023-11-28 06:39:30 25 4
gpt4 key购买 nike

当涉及到这些点和 vector 时,我已经完全弄糊涂了。

我有两个功能

 vector<int>& add(vector<int>& num1, vector<int>& num2){

vector<int> ansVec;
....
return ansVec;
}

vector<int>& multiply(vector<int>& num1, vector<int>& num2){
...
return add( multiply(num1, num2), multiply(num1, num2));
}

问题似乎是我正在返回对局部变量的引用。我怎样才能传递整个 vector ,而不仅仅是引用?

最佳答案

你不能总是通过引用返回,以下是您的问题的一些解决方案:

1)将结果放在容器参数中:

void add(vector<int>& num1, vector<int>& num2 ,vector<int>* result)

并用计算结果填充结果 vector

2)按值返回:

vector<int> add(vector<int>& num1, vector<int>& num2);

请注意,这里实际上是将用于计算的临时 vector 中的每个元素复制到返回的 vector 中

3) 将指针(或某种智能指针)返回到分配在堆上

的 vector
vector<int>* add(vector<int>& num1, vector<int>& num2)
{
vector<int>* res = new vector<int>();
...
return res ;
}

注意这里这段代码的客户端一定不要忘记删除vector

或者,例如 boost::shared_ptr ,或者 std::shared_ptr 如果你有 c++11:

shared_ptr<vector<int>> add(vector<int>& num1, vector<int>& num2)
{

shared_ptr<vector<int>> res (new vector<int>());
...
return res ;
}

关于c++ - 将 vector 与函数一起使用,指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com