为什么以下代码对于std::vector of bool不起作用(如预期)?
布尔向量中的某些元素随机为false。
对于int向量,所有内容都正常工作(使用多个循环进行测试)。
我在ubuntu 14.04 64位上使用g ++ 4.8.4。
我在ubuntu 14.04 64位上使用g ++ 4.8.4。
#include <iostream>
#include <vector>
using namespace std;
class TestBool
{
public:
TestBool() {}
bool test() {return true;}
int testInt() {return 10;}
};
void testBVec(vector<bool> &bv, size_t loop)
{
cout << "boolvec loop " << loop << endl;
for(size_t i = 0; i < bv.size(); i++) {
if( ! bv[i])
cout << "wholy shit with bool at index " << i << endl;
}
}
void testIntVec(vector<int> &iv, size_t loop)
{
cout << "intVec loop " << loop << endl;
for(size_t i = 0; i < iv.size(); i++) {
if( iv[i] != 10)
cout << "wholy shit with int at index " << i << endl;
}
}
int main()
{
vector<TestBool> tv(10);
size_t loops = 3;
for(size_t i = 0; i < loops; i++ ) {
vector<bool> bv(10);
vector<int> iv(10);
#pragma omp parallel for
for(int j = 0; j < 10; ++j) {
bv[j] = tv[j].test();
iv[j] = tv[j].testInt();
}
testBVec(bv, i+1);
testIntVec(iv, i+1);
}
return 0;
}