Rod*_*gel 2 c++ smart-pointers c++11
如何make_shared计算时间,分配不同的区域而不重复循环?
我有以下代码:
for( unsigned int count = 0; count < demandedSize; ++count )
{
m_connectionList.push_back( std::make_shared< Foo >( m_ip, m_port ));
}
Run Code Online (Sandbox Code Playgroud)
如何在没有循环的情况下缩短这个?
我知道std::vector接收第二个参数const T&,但在这种情况下,所有shared_ptrs都指向同一个地址(值被复制).
std::vector< std::shared_ptr<Foo> > vet( demandedSize, std::make_shared<Foo>( m_ip, m_port ) );
Run Code Online (Sandbox Code Playgroud)
如何执行make_shared计数时间,结果分配不同的区域而不重复循环
这应该做的伎俩:
std::generate_n( back_inserter( m_connectionList ), demandedSize, [this]{
return std::make_shared< Foo >( m_ip, m_port ) );
});
Run Code Online (Sandbox Code Playgroud)