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

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计数时间,结果分配不同的区域而不重复循环

zet*_*t42 5

这应该做的伎俩:

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

Coliru的实例.