考虑这个例子:
std::vector<Student> students;
//poplate students from a data source
std::vector<Student> searched(students.size());
auto s = std::copy_if(students.begin(), students.end(), searched.begin(),
[](const Student &stud) {
return stud.getFirstName().find("an") != std::string::npos;
});
searched.resize(std::distance(searched.begin(), s));
我有以下问题:
- 是否可以为搜索到的向量分配内存等于初始向量?可能有 500 个不小的对象,可能没有一个满足搜索条件?还有其他方法吗?
- 当复制到搜索到的向量时,它被称为复制赋值运算符,并且..显然会进行复制。如果从这 500 个对象中 400 个满足搜索条件呢?不只是浪费内存吗?
我是一个 C++ 菜鸟,所以我可能会说一些愚蠢的话。我不明白为什么要使用vector<T>
whereT
是一个对象。我会一直使用vector<shared_ptr<T>>
. IfT
是像 int 这样的原始类型,我想它使用起来有点简单vector<T>
。
我考虑了这个示例,因为我认为它非常笼统,您总是必须从数据库或 xml 文件或任何其他来源中提取一些数据。您是否曾经vector<T>
在数据访问层中使用过vector<shared_ptr<T>>
?