任何善良的灵魂都知道如何纠正以下代码
“d1.insert(d1.begin(),it [0]);”所以输出如下:
程序将成功运行并显示:1 2 3 4 5 6 7 8 9 10
d3.json
答案 0 :(得分:2)
从代码中可以看出,您要插入std::deque
而不是std::list
(您已经将数组值插入到列表l1
中)。您可以按照相同的步骤插入std::deque
:
int main(void) {
int tab[] = { 1,2,3,4,5,6,7,8,9,10 };
std::list<int> l1(tab, tab + 10);
std::deque<int> d1(tab, tab + 10);
}
我只是将A
替换为int
,因为前者看起来只是int
的包装。
或者你可以这样做,
int main(void) {
int tab[] = { 1,2,3,4,5,6,7,8,9,10 };
std::list<int> l1(tab, tab + 10);
std::deque<int> d1;
auto it = d1.begin();
d1.insert(it, l1.begin(), l1.end());
}
答案 1 :(得分:1)
另一种方法是使用std::copy
:
#include <algorithm>
#include <iterator>
//...
std::copy(l1.begin(), l1.end(), std::back_inserter(d1));
您的代码还有其他问题需要纠正:
1)删除空的A
拷贝构造函数。通过将其设为空,您可以创建不会复制A
成员的a
份副本。
2)A
构造函数的参数应该与成员变量的名称不同。