c++ - Boost Graph Library - 将 vector 插入边缘属性

标签 c++ boost

我想知道是否可以通过插入一个值来设置边的属性。示例如下所示。

struct Edge {

    //boundary length
    int length = 0;

    //boundary coordinates
    vector<cv::Point> boundary;

    //pointer to heap
    boost::heap::fibonacci_heap<rnn, boost::heap::compare<compare_nn>>::handle_type heap_pointer;

    Edge(float length = 0) : length (length ) {}
};

//i'd like to push in point into vector<cv::Point> boundary
boost::put(&Edge::boundary, g, boost::edge(0, 1, g), cv::Point(2,2)); 

我可以获取 vector 属性,在我它放回Edge之前一个点,但它看起来非常低效.我希望有人能给我一个建议。

最佳答案

更简单:

auto& boundary = boost::get(&Edge::boundary, g, boost::edge(0, 1, g));
boundary.emplace_back(2,2);

关键是对 vector 进行引用而不是复制它。

当然你可以拼成push_back(cv::Point(2,2))如果你的标准库不支持 emplace_back还没有。

关于c++ - Boost Graph Library - 将 vector 插入边缘属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970767/

相关文章:

c++ - 正则表达式不以零开头

c++ - Boost::Scoped_Ptr 破坏代码

c++ - 在对象超出范围之前调用的析构函数

c++ - 在 C++ 中修改静态成员变量

时间:2019-03-17 标签:c++coroutinesfinal_suspendforpromise_type

c++ - 如何初始化指向输出缓冲区长度的指针?

c++ - 为什么这个 C++0x 程序会产生意外的输出?

boost - 使用 bjam 进行简单安装

python - 使用 Boost::Python 进行高阶编程

c++ - 使用 friend 关键字和使用成员函数修改类内部的私有(private)变量有什么区别?