Mar*_*ott 3 c++ constructor vector c++11
我有一个非常简单的构造函数的类:
class mystream
{
public:
mystream(size_t buffersize,size_t index) : buffersize(buffersize),index(index){}
size_t buffersize;
size_t index;
};
Run Code Online (Sandbox Code Playgroud)
该mystream实例具有唯一的id,它与其在管理类的向量中的位置相对应:
class mystreammanager
{
public:
mystreammanager() : streams(8,1024, /* WHAT TO DO HERE ??? */ )
{
}
std::vector<mystream> streams;
};
Run Code Online (Sandbox Code Playgroud)
如何构造向量并使用索引的升序值初始化其元素?
一个简洁,清晰且易于调试的方法是将向量的构造推迟到静态类函数:
class mystreammanager
{
public:
mystreammanager() : streams{ generate_streams(1024, 8) }
{
}
private:
static std::vector<mystream> generate_streams(size_t buffersize, size_t qty)
{
std::vector<mystream> result;
result.reserve(qty);
for(size_t i = 0 ; i < qty ; ++qty) {
result.emplace_back(buffersize, i);
}
return result;
}
std::vector<mystream> streams;
};
Run Code Online (Sandbox Code Playgroud)
这是最佳效率,因为:
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |