如何使用 CreateThread() 将向量传递给线程?
How can I pass a vector to a thread using CreateThread()?
我正在尝试创建一个程序,要求用户输入一个数字并生成斐波那契数列。 Main 获取数字并将该数字设置为向量的第一个值。然后该向量将被发送到一个线程以生成等于该数字的斐波那契(因此,如果我键入 3
,该线程将生成前 3 个斐波那契数并将其添加到该向量)。然后向量将返回到主函数,以便它可以打印出值。
这是我所拥有的,但它一直说 Error: expression must be a pointer to a complete object type
我尝试打印出向量的第一个值。
#include <iostream>
#include <windows.h>
#include <vector>
using namespace std;
/* This function is executed by the child thread */
DWORD WINAPI calcFibNumbers(LPVOID fibNumber)
{
cout << fibNumber[0];
return 0;
}
/* This is the main function and start of program */
int main()
{
//Local Variables
vector<int> fibNumbers;
int numOfFib;
//Create child thread
HANDLE childThread = CreateThread(NULL, 0, calcFibNumbers, &fibNumbers, CREATE_SUSPENDED, NULL);
//Ask user for the number of fibonacci numbers
cout << "Enter how many fibonacci numbers you would like the program to generate: ";
cin >> numOfFib;
fibNumbers.push_back(numOfFib);
ResumeThread(childThread);
if (childThread)
{
WaitForSingleObject(childThread, INFINITE);
}
getchar();
getchar();
return 0;
}
谁能给我指出正确的方向?
vector<int>* fibNum = (vector<int>*)fibNumber; // pointer
vector<int>& fibNum = *(vector<int>*)fibNumber; // reference
我正在尝试创建一个程序,要求用户输入一个数字并生成斐波那契数列。 Main 获取数字并将该数字设置为向量的第一个值。然后该向量将被发送到一个线程以生成等于该数字的斐波那契(因此,如果我键入 3
,该线程将生成前 3 个斐波那契数并将其添加到该向量)。然后向量将返回到主函数,以便它可以打印出值。
这是我所拥有的,但它一直说 Error: expression must be a pointer to a complete object type
我尝试打印出向量的第一个值。
#include <iostream>
#include <windows.h>
#include <vector>
using namespace std;
/* This function is executed by the child thread */
DWORD WINAPI calcFibNumbers(LPVOID fibNumber)
{
cout << fibNumber[0];
return 0;
}
/* This is the main function and start of program */
int main()
{
//Local Variables
vector<int> fibNumbers;
int numOfFib;
//Create child thread
HANDLE childThread = CreateThread(NULL, 0, calcFibNumbers, &fibNumbers, CREATE_SUSPENDED, NULL);
//Ask user for the number of fibonacci numbers
cout << "Enter how many fibonacci numbers you would like the program to generate: ";
cin >> numOfFib;
fibNumbers.push_back(numOfFib);
ResumeThread(childThread);
if (childThread)
{
WaitForSingleObject(childThread, INFINITE);
}
getchar();
getchar();
return 0;
}
谁能给我指出正确的方向?
vector<int>* fibNum = (vector<int>*)fibNumber; // pointer
vector<int>& fibNum = *(vector<int>*)fibNumber; // reference