std::lower_bound是否不受竞赛条件的限制



在OpenMP循环中的共享向量对象上运行std::lower_bound安全吗?(使用C++11(

下面是一个基本的例子(根据我的代码编辑,不确定它是否真的运行(

// fill range
std::vector<size_t> range;
range.reserve(r_len);
for (size_t i=0; i < r_len; i++) {
range.push_back(i);
}
# pragma omp parallel for
for (size_t i=0; i<a_len; i++) {
double x = //... some calculation
auto lower = std::lower_bound(range.begin(), range.end(), x);
size_t ind = std::distance(range.begin(), lower);
}

好吧,使用std::lower_bound是安全的,因为它不会修改向量,所以只要没有其他东西修改向量,就可以同时调用它并获得正确的结果。

最新更新