我试图将集合的值存储到变量中。我尝试这个:
int a[1000],c[1000],ara[10000],t,n,i,j;
cin>>n;
set<int>st;
for(i=0; i<n; i++)
{
cin>>a[i];
st.insert(a[i]);
}
int p = st.size();
int m;
for(i=0;i<p;i++)
m = st[i];
错误:与'operator []'不匹配(操作数类型为'std :: set
'和'int')
std::set
没有operator[]
,就像数组一样。您正在尝试遍历set
中存储的值。您可以使用iterators
A std::set
不支持通过索引或键访问元素的概念。它的行为更像是数学集合。这就是为什么它不会重载operator[]
,并且您无法访问它的元素,例如数组,向量或映射。
当遇到此类编译器错误时,表明您在使用stl
容器,算法等错误的方法时,可以轻松地在cppreference.com上进行查找。这是set的示例。您会看到operator[]
中没有std::set
,因此出现了编译器错误。另外,在您的第一个for
循环中,使用st1
而不是st
。
operator[]