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); ); 谢谢
模板类列表(
私人:
/**基础数组。*/
项目类型*项目;
/**存储列表的当前大小。*/
整数计数;
/**允许的最大项目数*/
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很高兴听到:)