C++ 可以通过复制来初始化集合吗? std::向量m; m[0]。插入(0); m[0]。插入(1); std::set n=m[0];//允许这样做吗? 对于(std::set::iterator iter=n.begin();iter
我可以通过直接复制来初始化集合吗 发件人: 从各种数据源构造新容器,并可选地使用用户提供的分配器alloc或比较函数对象comp.C++ 可以通过复制来初始化集合吗? std::向量m; m[0]。插入(0); m[0]。插入(1); std::set n=m[0];//允许这样做吗? 对于(std::set::iterator iter=n.begin();iter,c++,stl,C++,Stl,我可以通过直接复制来初始化集合吗 发件人: 从各种数据源构造新容器,并可选地使用用户提供的分配器alloc或比较函数对象comp.… 3) 复制构造函数。使用other内容的副本构造容器。如果未提供alloc,则通过调用std::allocator\u traits::select\u on_container\u Copy\u构造(other.get\u allocator())获取分配器。 … 代码中的问题是:您定义了一个没有任何元素的向量,并尝试在0处更改该元素。 两种解决方案: std:
…
3) 复制构造函数。使用other内容的副本构造容器。如果未提供alloc,则通过调用std::allocator\u traits::select\u on_container\u Copy\u构造(other.get\u allocator())获取分配器。
…
代码中的问题是:您定义了一个没有任何元素的向量,并尝试在0处更改该元素。
两种解决方案:
std::vector<std::set<int>> m;
m[0].insert(0);
m[0].insert(1);
std::set<int> n = m[0]; // is this allowed?
for(std::set<int>::iterator iter = n.begin(); iter < n.end(); iter++) // error in this line, "<" not defined.
- 我可以通过直接复制来初始化集合吗
- 最后一行有错误
所写的forloop使用了“尝试时发生了什么?”?有错误吗?警告?它只是“不起作用”(如果不起作用,为什么不起作用)?文档(对于std::set)说了什么可能表明一种方式或另一种方式?我认为您想要使用
iter=n、 end()代码>替代。如何循环一个未从向量内的容器中复制的集合?请使用++iter
替代iter++
。您关于复制分配的引用是错误的。该代码不(!)调用复制分配或移动分配运算符。=
符号让人相信这一点,但由于表达式是初始化,因此我们遇到复制初始化:
// Solution 1
std::vector<std::set<int>> m(1); // Define vector with one element
// Solution 2
std::vector<std::set<int>> m;
m.push_back(std::set<int>()); // Add new element to the vector with push_back
m.emplace_back(); // Add new element to the vector with emplace_back (recommended)
for(std::set<int>::iterator iter = n.begin(); iter != n.end(); iter++)