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