gpt4 book ai didi

c++ - 得到这个错误: request for member 'at' in 'array3' , which is of pointer type

转载 作者:行者123 更新时间:2023-12-02 10:50:51 25 4
gpt4 key购买 nike

函数apply_all应该将array2的所有元素(大小为2)乘以array1的所有元素(大小为1)并将它们存储在动态创建的 vector 中(大小为1 * size2)
编译器提到这一行是因为错误:array3.at(i)= array1.at(k)* array2.at(j);

#include <iostream>
#include <vector>
using namespace std;

vector<int> *apply_all(vector<int>&array1,size_t &size1,vector<int>&array2,size_t &size2)
{
vector<int> *array3{nullptr};
array3=new vector<int>(size1*size2); //heap memory allocated using vectors
size_t i{0};
for (size_t j=0;j<size2;j++){
for (size_t k=0;k<size1;k++){
array3.at(i)=array1.at(k)*array2.at(j);
i++;
}
}
return array3;
}

最佳答案

分配 vector 太疯狂了。使用 vector 的大多数优点(例如不必手动管理内存)会立即消失。像这样在堆栈上创建 vector

vector<int> apply_all(vector<int>&array1,size_t &size1,vector<int>&array2,size_t &size2)
{
vector<int> array3(size1*size2);
...
return array3;
}
这也可以解决您所询问的错误。
vector 从堆中分配其内存,但是无需从堆中分配 vector 本身

关于c++ - 得到这个错误: request for member 'at' in 'array3' , which is of pointer type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63724203/

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