Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost块间接排序分段错误_C++_Sorting_C++11_Boost_Parallel Processing - Fatal编程技术网

C++ Boost块间接排序分段错误

C++ Boost块间接排序分段错误,c++,sorting,c++11,boost,parallel-processing,C++,Sorting,C++11,Boost,Parallel Processing,代码如下: template<int N> void para_sort(std::vector<bfs_node<N>>& res) { #pragma omp parallel { boost::sort::block_indirect_sort(res.begin(), res.end(), compare_node<N>); } } 其中id字段表示无序集类型数据结构。 例如:id表示集合{

代码如下:

template<int N>
void para_sort(std::vector<bfs_node<N>>& res) {
    #pragma omp parallel
    {
        boost::sort::block_indirect_sort(res.begin(), res.end(), compare_node<N>);
    }
}
其中
id
字段表示
无序集
类型数据结构。 例如:
id
表示集合
{1,2,3}
而_set(id,1)中的
将返回
true
,否则
false

提出的例外情况:
大小为16的读取无效

==2125==at 0x46C59F:void boost::sort::pdqsort_detail::pdqsort_loop(uu gnu cxx::u normal_迭代器,u gnu cxx::u normal_迭代器,std::less,int,bool)

是否使用附加参数将线程数设置为
block\u indirective\u sort
?如果需要,您需要OMP指令吗?我尝试过,但没有效果
#pragma omp parallel
因此应该公开要使用的所有线程。是否使用附加参数将线程数设置为
block_indirect_sort
?如果需要,您需要OMP指令吗?我尝试过,但没有效果<代码>#pragma omp parallel
因此应该公开要使用的所有线程。
template<int N>
bool compare_node(const bfs_node<N>& lhs, const bfs_node<N>& rhs) {
    if (lhs.id == rhs.id) return false;
    for (int i = 0; i < N * 64; ++i) {
        bool lflag = in_set(lhs.id, i);
        bool rflag = in_set(rhs.id, i);
        if (lflag == rflag ) { continue; }
        if (lflag) return true;
        return false;
    }
    return false;
} //