我的程序中有一个全局数组,我希望能够在开始时使用函数改变它的大小至少一次。基本上是这样的:
pthread_t threadsArray[10]; //default size: 10
void SetMaxThreads(unsigned int count) {
pthread_t threadsArray[count];
}
你建议我做什么?我怎么能做到这一点?
答案 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