c++ - 如何 make_shared 计数次,分配不同的区域而不重复循环?

标签 c++ c++11 smart-pointers

如何make_shared计算次数,分配不同的区域而不重复循环?

我有以下代码:

for( unsigned int count = 0; count < demandedSize; ++count  )
{   
   m_connectionList.push_back( std::make_shared< Foo >( m_ip, m_port )); 
}

如何缩短这个没有循环

我知道 std::vector 接收第二个参数作为 const T&,但在那种情况下所有 shared_ptr 都指向同一个地址(值被复制)。

std::vector< std::shared_ptr<Foo> > vet( demandedSize, std::make_shared<Foo>( m_ip, m_port ) );

如何执行 make_shared count 次,并分配不同的区域作为结果而不返回循环

最佳答案

这应该可以解决问题:

std::generate_n( back_inserter( m_connectionList ), demandedSize, [this]{
    return std::make_shared< Foo >( m_ip, m_port ) );
});

Live Example on Coliru.

关于c++ - 如何 make_shared 计数次,分配不同的区域而不重复循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43102934/

相关文章:

c++ - 具有智能指针的虚拟构造函数习语

c++ - 什么时候使用空指针?

c++ - 以编程方式在 Linux 上更改墙纸

basic_string 的 C++ 模板推导失败

c++ - 为什么我无法使用统一初始化来初始化字符串?

c++ - 模板函数参数显式类型声明

c++ - 从 Rcpp Catch 测试访问 `inst/extdata` 上的数据

c++ - 在不打开端口的情况下确定设备是否连接/断开到 RS232 端口

c++ - 使用 boost::make_shared 分配 char* 数组

c++ - 操作动态内存,重载一个const成员函数有意义吗?