相关疑难解决方法(0)

621
推荐指数
17
解决办法
33万
查看次数

C++将一个向量追加到另一个向量

我完全理解这个问题已经被问了很多,但我要求一个特定的变化,我的搜索foo已经放弃了,因为我只发现了一个算法将一个现有的向量附加到另一个,但没有一个返回到一个功能.

我有这个功能列出目录中的所有文件:

vector<string> scanDir( const string& dir )
Run Code Online (Sandbox Code Playgroud)

可以在内部调用自己(对于子目录).

我需要一种将返回值附加到调用者向量的简短方法.我脑子里有这样的东西(当然它不存在:():

vector<string> fileList;
//...
fileList.append( scanDir(subdirname) );
Run Code Online (Sandbox Code Playgroud)

我担心存储返回值并将其插入fileList会带来性能不佳.我的意思是:

vector<string> temp( scanDir(subdirname) );
copy( temp.begin(), temp.end(), back_inserter(fileList) );
Run Code Online (Sandbox Code Playgroud)

谢谢!

PS:我不是强迫自己使用矢量,任何其他同样表现良好的容器,并且可以阻止潜在的大型复制操作.

c++ stl vector append

9
推荐指数
3
解决办法
3244
查看次数

根据定义std :: vector :: insert保留吗?

在a上调用insert成员函数时std::vector,它会reserve在"推回"新项目之前吗?我的意思是标准保证与否?

换句话说,我应该这样做:

std::vector<int> a{1,2,3,4,5};
std::vector<int> b{6,7,8,9,10};
a.insert(a.end(),b.begin(),b.end());
Run Code Online (Sandbox Code Playgroud)

或者像这样:

std::vector<int> a{1,2,3,4,5};
std::vector<int> b{6,7,8,9,10};
a.reserve(a.size()+b.size());
a.insert(a.end(),b.begin(),b.end());
Run Code Online (Sandbox Code Playgroud)

还是其他更好的方法?

c++ vector c++11

8
推荐指数
1
解决办法
2710
查看次数

标签 统计

c++ ×3

vector ×3

stl ×2

append ×1

c++11 ×1

concatenation ×1

stdvector ×1