gpt4 book ai didi

c++ - OpenMP 通过 std::set 使用迭代器

转载 作者:行者123 更新时间:2023-11-28 00:13:10 25 4
gpt4 key购买 nike

我有一个包含大量段的网格,我想应用过滤器并填充 std::set set_,它是类 A 的私有(private)成员。有一个名为 fill_vec() 的函数,它将使用 for 循环填充 vector :

fill_set()
{
for(mesh::SegIterator it = A.beginSeg(); it != A.endSeg(); ++it )
{
mesh::Segment Seg_ = *it;
int SignP = 0;
int SignN = 0;


for(mesh::PointIterator itp = Seg_.beginPoint(); itp != Seg_.endPoint(); ++itp )
{
double old_, new_;
...
...

if( old_ > 0.0 && new_ > 0.0 )
SignP++;
if( old_ < 0.0 && new_ < 0.0 )
SignN++;
}
if( (SignP == 1 && SignN == 1) || (SignP == 1 && SignN == 2) )
{
set_.insert(Seg_);
}
}

我正在尝试使用 OpenMP 和 C++03 并行执行上述代码。我看到了一些解决方案,例如 this .还有其他安全整洁的解决方案吗?

最佳答案

尝试从 it != A.endSeg() 更改至 it < A.endSeg() . != 的问题是循环不是可数。编译器无法确定循环是否会结束。将其切换为 <应该使它可数。

关于c++ - OpenMP 通过 std::set 使用迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com