将所有元素从一个std :: list添加到另一个std :: list的"正确"方法是什么?
void
Node::addChilds(const NodeList *list)
{
for(NodeList::const_iterator i = list->begin();
i != list->end();
++i)
{
this->m_childs.push_back(*i);
}
}
Run Code Online (Sandbox Code Playgroud)
我想到了std :: copy,但afaik for copy我必须调整目标列表的大小,备份结束迭代器(在调整大小之前)等.
我正在寻找单行声明.
我理解为什么这会导致段错误:
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
int iArr[5] = {1, 2, 3, 4, 5};
int *p = iArr;
copy(p, p+5, v.begin());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但为什么这不会导致段错?
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
int iArr[5] = {1, 2, 3, 4, 5};
int *p = iArr;
v.reserve(1);
copy(p, p+5, v.begin());
return 0;
}
Run Code Online (Sandbox Code Playgroud)