在C++中实现自己的模板类数组

4

我一直在尝试用C++实现一个数组类,并且一直在尝试实现一个doesContain方法,检查特定项是否在数组中。我想知道像这样的实现方式是否可行或者是否是一个好的做法:

    T *array;
    int size;

    public:
    array(int length=50) {
        size=length;
        array= new T[length];
    }

    bool doesContain(const T &obj) {
        bool bFlag = false;
        for (int i = 0; i < size; ++i) {
            if (obj == array[i]) {
                bFlag = true;
             }
        }
        return bFlag;
     }

你可以使用return std::find(array, array + size, obj) != (array + size);代替编写循环。 - PaulMcKenzie
@PaulMcKenzie 这是一项作业,我不允许使用标准库。 - Jon Snow
无法抗拒:你什么都不知道,琼恩·雪诺。 - TemplateRex
1个回答

5
如果你想要一个检查对象是否在数组中的方法,是的,这样会起作用。当然,前提是操作符==是可以接受的。
我建议当你找到匹配时只返回“true”,在最后返回“false”。
bool doesContain(const T &obj) {
    for (int i = 0; i < size; ++i) {
        if (obj == array[i]) {
            return true;
         }
    }
    return false;
 }

好的解决方案。一些程序员(例如Linux内核开发人员)更喜欢设置返回并中断,因为这样他们可以将其设置为单个退出点作为断点。 - Davislor
在现代C++中,您可以使用RAII类析构函数来执行在退出点处所需的常见清理工作。 - TemplateRex
他们确实在写低层次的C代码。 - Davislor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接