首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取此错误:请求成员'at‘in’array3 3‘,这是指针类型

获取此错误:请求成员'at‘in’array3 3‘,这是指针类型
EN

Stack Overflow用户
提问于 2020-09-03 12:59:38
回答 1查看 59关注 0票数 0

函数apply_all应该将array2 (of size2)的所有元素多到array1 (of size1)的所有元素,并将它们存储在动态创建的向量上(大小为1×2),编译器提到这一行以避免错误: array3.at(i)=array1.at(k)*array2.at(j);

代码语言:javascript
运行
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-03 13:14:51

分配向量简直是疯了。使用向量的大部分优点(比如不必手动管理内存)瞬间就消失了。在堆栈上创建向量,如下所示

代码语言:javascript
运行
复制
vector<int> apply_all(vector<int>&array1,size_t &size1,vector<int>&array2,size_t &size2)
{
    vector<int> array3(size1*size2);
    ...
    return array3;
}

这也修复了您询问的错误。

向量从堆中分配内存,但不需要从堆中分配向量本身的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63724203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档