如何将 boost::Makevariantover 转换为向量
How to convert boost::Makevariantover to vector
我有一个boost::makevariantover。我怎样才能将其转换为 vector 。使用 boost::apply_visitor
的任何示例都会有所帮助
class pixel_visitor
: public boost::static_visitor<>
{
public:
template <typename T>
void operator() (const ome::compat::shared_ptr<PixelBuffer<T> >& v)
{
std::cout << std::real(v);
}
};
pixelBuffer test= buf.vbuffer();
test.apply_visitor(&pixel_visitor());
其中
typedef boost::make_variant_over<pixel_buffer_types>::type pixelBuffer;
我们不知道您的像素缓冲区类型是什么。
无论如何,如果您知道如何将它们转换为矢量,您可以简单地return从访问者的呼叫接线员那里:
class pixel_visitor
: public boost::static_visitor<std::vector<WhatEverYouWant> >
{
public:
template <typename T>
result_type operator() (const ome::compat::shared_ptr<PixelBuffer<T> >& v)
{
std::vector<WhatEverYouWant> result;
// do your conversion here
return result;
}
};
所以你可以,例如
std::vector<WhatEverYouWant> applied;
applied = boost_apply_visitor(pixel_visitor(), test);
不是 .vbuffer() 调用 .array(),它已经 applies the/a visitor "for you":
template<typename T>
inline typename PixelBuffer<T>::array_ref_type&
VariantPixelBuffer::array()
{
detail::VariantPixelBufferVisitor<T> v;
return boost::apply_visitor(v, buffer).array();
}
或原始类型的 .data()。
我有一个boost::makevariantover。我怎样才能将其转换为 vector 。使用 boost::apply_visitor
的任何示例都会有所帮助class pixel_visitor
: public boost::static_visitor<>
{
public:
template <typename T>
void operator() (const ome::compat::shared_ptr<PixelBuffer<T> >& v)
{
std::cout << std::real(v);
}
};
pixelBuffer test= buf.vbuffer();
test.apply_visitor(&pixel_visitor());
其中
typedef boost::make_variant_over<pixel_buffer_types>::type pixelBuffer;
我们不知道您的像素缓冲区类型是什么。
无论如何,如果您知道如何将它们转换为矢量,您可以简单地return从访问者的呼叫接线员那里:
class pixel_visitor
: public boost::static_visitor<std::vector<WhatEverYouWant> >
{
public:
template <typename T>
result_type operator() (const ome::compat::shared_ptr<PixelBuffer<T> >& v)
{
std::vector<WhatEverYouWant> result;
// do your conversion here
return result;
}
};
所以你可以,例如
std::vector<WhatEverYouWant> applied;
applied = boost_apply_visitor(pixel_visitor(), test);
不是 .vbuffer() 调用 .array(),它已经 applies the/a visitor "for you":
template<typename T>
inline typename PixelBuffer<T>::array_ref_type&
VariantPixelBuffer::array()
{
detail::VariantPixelBufferVisitor<T> v;
return boost::apply_visitor(v, buffer).array();
}
或原始类型的 .data()。