用更大的数组覆盖数组

时间:2014-09-14 16:17:40

标签: c++ arrays

我的程序中有一个全局数组,我希望能够在开始时使用函数改变它的大小至少一次。基本上是这样的:

pthread_t threadsArray[10]; //default size: 10

void SetMaxThreads(unsigned int count) {
    pthread_t threadsArray[count];
}

你建议我做什么?我怎么能做到这一点?

2 个答案:

答案 0 :(得分:3)

我建议使用标准容器std::vector而不是数组。

例如

std::vector<pthread_t> threadsArray( 10 ); //default size: 10

void SetMaxThreads(unsigned int count) {
    threadsArray.resize( count );
}

答案 1 :(得分:0)

您可以声明一个动态数组。这可以通过两种不同的方式完成。您可以使用std::vector,也可以使用指针。Vector Documentation。使用指针的示例:

pthread_t *threadsArray; // no default size

void SetMaxThreads(unsigned int count) {
   delete [] threadsArray;
   threadsArray = new pthread_t[count];
}

编辑,正如一些评论指出的那样,使用std::unique_ptr<pthread_t[]>代替数组指针更安全。std::unique_ptr Documentation