설명벡터 <int>을 void *로 변환하고 벡터 <int>으로 다시 변환하는 방법은 무엇입니까?
내가 pthread를 통해 호출 함수에서 매개 변수로 전달할 수 있도록, 무효의 *에 벡터를 변환해야합니다. 그 함수에서, 나는 요소에 접근하기 위해 void *를 벡터로 다시 변환해야한다.
코드
void* compare(void* x) {
vector<int>* v = (vector<int>*)x;
vector<int> v1 = v[0];
vector<int> v2 = v[1];
...
}
int main() {
...
vector<int> x = {1, 2, 3, 4};
pthread_create(&threads[i], NULL, compare, static_cast<void*>(&x));
...
}
문제
V 2 별도의 벡터를 포함 왜 이해가 안 돼요. 또한 유효한 값은 v1과 v2 사이에서 회전합니다. 때때로 하나는 쓰레기이고 다른 하나는 유효한 값을가집니다. 이 문제는 내 캐스팅/변환 또는 내 스레드 동기화 문제가 있습니까?
을 시도해보십시오'INT V1 = (* V) [0]'v'는 벡터가 아닌 벡터에 대한 포인터입니다'때문이다. –
std :: copy를 사용하거나 C++ 11을 사용하는 경우 static_cast –
C 언어에는이나 다른 템플릿이 없습니다. 그래서'c' 태그를 제거하십시오 –
user3629249