首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用boost::assign::list_of

使用boost::assign::list_of
EN

Stack Overflow用户
提问于 2012-11-08 08:34:05
回答 2查看 17.9K关注 0票数 13

该文件汇编如下:

代码语言:javascript
复制
std::vector<int> value = boost::assign::list_of(1)(2);

但不是这个:

代码语言:javascript
复制
Constructor(std::vector<int> value)
{
}

Constructor (boost::assign::list_of(1)(2));

是否有一个一行的解决方案来初始化传递给构造函数的向量?

更好的是,如果构造函数通过引用将类变量复制到类变量:

代码语言:javascript
复制
Constructor(std::vector<int>& value)
{
    _value = value;
}

更新

如果我尝试以下几点:

代码语言:javascript
复制
enum Foo
{
    FOO_ONE, FOO_TWO 
};

class Constructor
{
public:
    Constructor(const std::vector<Foo>& value){}
};

Constructor c(std::vector<Foo>(boost::assign::list_of(FOO_ONE)));

我得到编译器错误:

代码语言:javascript
复制
error C2440: '<function-style-cast>' : cannot convert from 'boost::assign_detail::generic_list<T>' to 'std::vector<_Ty>'
1>          with
1>          [
1>              T=Foo
1>          ]
1>          and
1>          [
1>              _Ty=Foo
1>          ]
1>          No constructor could take the source type, or constructor overload resolution was ambiguous
EN

回答 2

Stack Overflow用户

发布于 2013-07-23 09:08:32

这是一个恼人的问题,我们之前也有过一些时间。我们使用convert_to_container方法修复了它:

代码语言:javascript
复制
Constructor c(boost::assign::list_of(1)(2).convert_to_container<std::vector<int> >() );

std::list在构造函数中也存在更多问题。有关适当的答案,请参见of doesn't compile

票数 20
EN

Stack Overflow用户

发布于 2014-05-09 09:23:39

我使用这个模板来创建std::vector的临时实例:

代码语言:javascript
复制
#include <vector>
namespace Util {
//init vector
template <typename ELEMENT_TYPE > struct vector_of
    : public std::vector<ELEMENT_TYPE>
{
    vector_of(const ELEMENT_TYPE& t)
    {
        (*this)(t);
    }
    vector_of& operator()(const ELEMENT_TYPE& t)
    {
        this->push_back(t);
        return *this;
    }
};
}//namespace Util

用法如下所示:

代码语言:javascript
复制
Constructor (Util::vector_of<int>(1)(2));

构造函数签名如下所示:

代码语言:javascript
复制
Constructor(const std::vector<int>& value)
{
    _value = value;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13285272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档