1

我正在编写一个选择排序程序。我刚刚发布了一些关于 std::vector 的内容,但是这篇文章是关于不同主题的。

我能够编译该程序,但是在 main 方法中调用 insert() 时它遇到了运行时错误。

我的 ArrayS 具有以下代码作为复制构造函数,并且在创建 ArrayS 时还将 nElems 初始化为 0。

[ArrayS.cpp]

ArrayS::ArrayS(int max)
{
    std::vector<long> a;                 
    nElems = 0; 
}

void ArrayS::insert(long value)    // put element into array
      {
      a[nElems] = value;             // insert it
      nElems++;                      // increment size
      }

[阵列S.h]

private:

std::vector<long> a;

int nElems; 

现在,我是否需要 ArrayS.cpp 中的 get/set 方法来操作 nElems?我不确定在 C++ 中如何使用私有变量。

谢谢你。

4

1 回答 1

1

向量跟踪它们的大小。为了提高效率,a[nElems]将假设您vector的空间足够大以容纳该访问。

看起来你想要:

void ArrayS::insert(long value)    // put element into array
      {
      a.push_back(value);             // insert it AND increment size
      }

看起来你也可以无视nElems。如果你想要向量的大小,只需调用a.size().

于 2013-03-19T22:14:54.747 回答