关于使用boost :: geometry :: model :: polygon和std :: list作为容器

问题描述 投票:1回答:1

我尝试了Boost webpage的示例代码,它运行正常 - 计算多边形的面积。 polygon类的文档告诉我们可以为顶点使用不同的容器:vector(默认值),list和deque。

所以,我决定使用std :: list容器。但是编译器(Visual Studio 2017和gcc)返回了很多与未为std :: list定义的迭代器相关的错误:

BOOST_CONCEPT_USAGE(RandomAccessIteratorConcept)
{
    i += n;
    i = i + n;
    i = n + i;
    i -= n;
    i = i - n;
    n = i - j;
}

BOOST_concept(Convertible,(X)(Y))
{
    BOOST_CONCEPT_USAGE(Convertible) {
        Y y = x;
        ignore_unused_variable_warning(y);
    }
    private:
    X x;
};

难道我做错了什么?

boost polygon boost-geometry stdlist
1个回答
0
投票

你不能。根据您的说法,您没有说明确切的位置和方式,文档声明“可以使用不同的顶点容器:向量(默认值),列表和双端队列”。

根据Polygon Concept的文档,戒指类型必须符合戒指概念。

根据Ring Concept std::list<>的文件是不可能的,因为:

  • 它必须像Boost.Range随机访问范围一样

std::list的迭代器不是random access iterators那么明显与你的主张相矛盾。 (请注意,cppreference上列出的要求与您在问题中列出的要求非常相似)。

© www.soinside.com 2019 - 2024. All rights reserved.