【发布时间】:2020-09-03 12:59:38
【问题描述】:
函数apply_all应该将array2(size2)的所有元素与array1(size1)的所有元素相乘,并将它们存储在一个动态创建的向量(size1*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;
}
【问题讨论】:
-
array3是一个指针。使用->。 -
为什么不坚持使用向量?您是否有理由搞乱手动内存管理?
-
我试图解决的问题告诉我使用 array3 的动态内存来测试我的知识,因为我是这个主题的新手。
-
@ArpanBose --
array3=new vector<int>[size1*size2];-- 看起来不对。您正在动态创建size1*size2,向量? -
@PaulMcKenzie 是的,我试图动态创建 size1*size2 的向量。我不明白这里有什么问题。请澄清
标签: c++ pointers vector compiler-errors