构建向量C++

construct vector C++

本文关键字:C++ 向量 构建      更新时间:2023-10-16

我目前正在为向量类实现构造函数(我的教授说,我们可以省去任何使用分配器的东西)。我使用了我的教授给我们的参考网站来确定函数的格式:http://www.cplusplus.com/reference/stl/vector/vector/

我的函数出现了一些错误。其中两个错误是:

语法错误:标识符"size_type"

"value":未声明的标识符

你知道我为什么会犯这些错误吗?这是我的代码:

explicit vector (size_type n, const T& value= T())
{
    my_vect=new int x[2*n];
    for(int i=0; i<n; i++)
    {
        vect[i]=value;
        length++;
    }
}

如果在.h文件中定义类,则= T()是默认值。当您在.cpp或.cc文件中实现该方法时,可以省略默认值。

size_type似乎不在全局范围内,因此需要使用resolution运算符来为其提供正确的范围。它似乎是std::string::size_type。这可能只是size_t的一个typedef。我在STL容器中看到size_type,但在创建自己的类时从未使用过它。

此外,正如Dietmar Kühl所提到的,当使用C++模板时,您需要用template <typename T> 来装饰所有东西

这段代码缺少很多上下文。这使得很难判断问题出在哪里。从错误消息来看,您似乎至少还没有定义size_type。看起来T也没有定义,这让我认为你试图定义构造函数,但这看起来像这样:

template <typename T>
vector<T>::vector(size_type n, T const& value):
    my_vect(new T[2u * n]),
    length(n)
{
    for (size_type i(0); i != n; ++i) {
        my_vect[i] = value;
    }
   // or: std::fill_n(my_vect, n, value);
}

这也修复了一些错误(使用intT,使用vectmy_vext,未初始化使用length)。请注意,在C++中增加变量的惯用方法是使用预增量(是的,该语言实际上应该被称为"++C",原因不仅仅是惯用)。