所有重载都std::vector::insert()需要一个值参数,即要插入的项.但是,我的项类型很复杂,我宁愿插入一个空构造的项.也就是说,我正在寻找一种在没有类型名称重复的情况下执行以下操作的方法.
std::vector<Long_and_complicated_type_name> v;
...
v.insert(iter, Long_and_complicated_type_name());
Run Code Online (Sandbox Code Playgroud)
push_back虽然我主要感兴趣,但存在同样的问题insert.
该std::vector方法emplace和emplace_back可以达到这一目的.
template< class... Args >
iterator emplace( const_iterator pos, Args&&... args );
Run Code Online (Sandbox Code Playgroud)
args允许转发可以不存在
std::vector<Long_and_complicated_type_name> v;
...
v.emplace(iter);
Run Code Online (Sandbox Code Playgroud)
乃至
v.emplace_back();
Run Code Online (Sandbox Code Playgroud)
其它的办法:
#include <vector>
struct supercalafragalisticexpialadocious {};
int main()
{
std::vector<supercalafragalisticexpialadocious> v;
v.push_back({});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |