説明ベクトル<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の間で回転します。時には1つは迷惑メールであり、もう1つは有効な値です。これはキャスト/コンバージョンやスレッドの同期に関する大きな問題に問題がありますか?
'int型V1 =(* v)を試してみてください[0] v'がベクトルでないベクトルへのポインタである' 'ので。 –
std :: copyを使用するか、またはC++ 11の場合static_castを使用 –
C言語にはも他のテンプレートもありません。 'c'タグを削除してください –
user3629249