C++ 在集合的向量中插入错误

C++ 在集合的向量中插入错误,c++,C++,我在下面的代码中得到了错误:“在'a'之前应该是初始值设定项”。但是我不知道初始化器的用途是什么,我应该如何使用它。我是C++初学者,请原谅我的新手问题。 #include <set> #include <vector> #include <iostream> using namespace std; int main() { vector<set<unsigned> > a; set<unsigned>::itera

我在下面的代码中得到了错误:“在'a'之前应该是初始值设定项”。但是我不知道初始化器的用途是什么,我应该如何使用它。我是C++初学者,请原谅我的新手问题。
#include <set>
#include <vector>
#include <iostream>
using namespace std;

int main()
{
 vector<set<unsigned> > a;
 set<unsigned>::iterator it;
 a[0].insert(0);
 a[0].insert(1);
 a[0].insert(2);
 for(it=a[0].begin(); it!=a[0].end; ++it)
 {
  cout<<*it;
 }
 return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
载体a;
set::迭代器;
a[0]。插入(0);
a[0]。插入(1);
a[0]。插入(2);
for(it=a[0]。begin();it!=a[0]。end;++it)
{
cout看起来问题(或至少一个问题)缺少分号:

set<unsigned>::iterator it
set::迭代器
看起来问题(或至少一个问题)是缺少分号:

set<unsigned>::iterator it
set::迭代器

如果未使用
名称空间std
,则必须在该名称空间的成员前面加上
std::

std::vector<std::set<unsigned> > a;
std::向量a;

如果未使用
名称空间std
,则必须在该名称空间的成员前面加上
std::

std::vector<std::set<unsigned> > a;
std::向量a;

问题中显示的代码(如果已编译)将导致未定义的行为,因为您没有向向量添加任何内容,但仍然访问第一个元素,因为有一个元素。请注意,这是未定义的行为(即使要编译)。
a
为空,因此
a[0]
是未定义的行为。您应该在构建
a(1);
时将
a的大小设置为1,或者使用
a.push_back(…)
在构建了
a
之后。我注意到您默默地修复了答案中显示给您的问题。但是您不可能仍然得到相同的错误。现在您唯一剩下的(编译时)错误是
a[0]上缺少参数.end
@JoachimPileborg感谢你+1…它修复了我的error@Cornstalks感谢+1到u…它修复了我的错误问题中显示的代码(如果编译)将导致未定义的行为,因为您不向向量添加任何内容,但仍然访问第一个元素,因为有一个。请注意,这是未定义的行为(即使要编译).
a
为空,因此
a[0]
是未定义的行为。您应该在构建
a(1);
时将
a的大小设置为1,或者使用
a.push_back(…)
在构建了
a
之后。我注意到您默默地修复了答案中显示给您的问题。但是您不可能仍然得到相同的错误。现在您唯一剩下的(编译时)错误是
a[0]上缺少参数.end
@JoachimPileborg感谢你+1…它修复了我的error@Cornstalks谢谢你,它修正了我的错误