C++ 在C+中填写方法问题+;对于一个类';AList';?

C++ 在C+中填写方法问题+;对于一个类';AList';?,c++,arrays,class,C++,Arrays,Class,我是编程新手,想知道是否有人可以指导我解决以下问题?谢谢,任何建议都会有帮助的 在AList类中实现一个fill方法,用给定的值填充列表中的所有元素。例如,设L=[1,2,3]。调用L.fill(0)将使L=[0,0,0]。 下面是AList类的框架: 模板类列表( 私人: /**基础数组。*/ 项目类型*项目; /**存储列表的当前大小。*/ 整数计数; /**允许的最大项目数*/ int-maxCnt; 公众: //省略了其他功能。 填空(const ItemType&it); ); 谢谢

我是编程新手,想知道是否有人可以指导我解决以下问题?谢谢,任何建议都会有帮助的

  • 在AList类中实现一个fill方法,用给定的值填充列表中的所有元素。例如,设L=[1,2,3]。调用L.fill(0)将使L=[0,0,0]。 下面是AList类的框架:
  • 模板类列表(
    私人:
    /**基础数组。*/
    项目类型*项目;
    /**存储列表的当前大小。*/
    整数计数;
    /**允许的最大项目数*/
    int-maxCnt;
    公众:
    //省略了其他功能。
    填空(const ItemType&it);
    );
    
    谢谢大家!

    这应该有效:

    void fill(const ItemType & it){
        for(int i=0; i<count;i++){
            items[i]=it;
        }
    }
    
    void fill(const ItemType&it){
    
    对于(int i=0;i如果修改类以提供
    begin()
    end()
    迭代器,则可以使用
    std::transform

    void fill(const ItemType &it) {
      std::transform(this->begin(), 
                     this->end(), 
                     this->begin(), 
                     [it](const ItemType &) { 
                       return it;
                     }
      );
    }
    

    只需委托给
    std::fill
    std::begin()
    std::end()
    的较新语法允许使用C样式的数组。如果将实现更改为
    std::vector
    std::array
    则无需进行任何其他更改即可工作

    模板
    阶级主义者{
    公众:
    //省略了其他功能。
    填空(常量项目类型和it){
    std::fill(std::begin(项目)、std::end(项目)、it);
    }
    受保护的:
    私人:
    ItemType*项{nullptr};
    std::size\u t count{};
    std::size_t maxCnt{};
    };
    
    for循环需要什么帮助?我很难理解将maxCnt放置在何处,因为您只填充活动成员,所以容量
    maxCnt
    不是
    for
    循环所需的问题。只需要当前大小,
    count
    。您甚至需要在此处使用
    maxCnt
    maxCnt
    表示?它与
    count
    有何不同?要回答这个问题,您还需要了解
    项是什么。注释中说“底层数组”但是
    被声明为指针,而不是数组。我猜这一切意味着什么。我建议您学习什么是指针以及它们与数组的关系。在类声明周围使用括号:
    类列表(…);
    是非法的。请改用大括号:
    类列表{…}
    @Perette我确信我的方法是有效的。如果你投了反对票,请撤销,除非你能证明不是这样。
    (*项)[I]=it;
    尽管如此,也不会起作用。@Wes 1.你对一个明确的家庭作业问题给出了一个有效的答案。2.你的答案假设指针分配正确,考虑到OP的明显级别,这似乎是一个疯狂的假设。@Wes感谢你的帮助!这有助于解释为什么要使用for循环,并且我能够找到它倒立填充法better@rukhi98很高兴听到:)