【发布时间】:2018-07-24 11:39:13
【问题描述】:
我是 STL 地图和矢量的新手。我正在尝试打印向量集中存在的元素。最后一个 for 循环用于打印元素。代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int arr[]={2,0,2,1,4,3,1,0};
vector<int> v;
set< vector<int> > st;
//set<int> temp;
int init=0,fin=0;
for(int i=0;i<8;++i){
if(find(v.begin(),v.end(),arr[i])==v.end()){//if(temp.find(arr[i])==temp.end()){
v.push_back(arr[i]);//temp.insert(arr[i]);
}
else{
st.insert(v);
v.clear();//temp.clear();
v.push_back(arr[i]);//temp.insert(arr[i]);
}
}
set<vector<int> >::iterator itr;
vector<int>::iterator str;
for(itr=st.begin();itr!=st.end();++itr){
for(str=itr->begin();str!=itr->end();++str){
cout<<*str<<" ";
}
cout<<endl;
}
return 0;
}
错误是:
a.cpp:26:11: error: no viable overloaded '='
for(str=itr->begin();str!=itr->end();++str){
~~~^~~~~~~~~~~~~
/Library/Developer/CommandLineTools/usr/include/c++/v1/iterator:1258:7: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from '__wrap_iter<const_pointer>'
to 'const __wrap_iter<int *>' for 1st argument
class __wrap_iter
^
a.cpp:34:2: error: unknown type name 'a'
a.cpp:26:10: error: no viable overloaded '='
^
a.cpp:34:3: error: cannot use dot operator on a type
a.cpp:26:10: error: no viable overloaded '='
【问题讨论】:
-
宣扬
using namespace std;的网站,尤其是typedef long long ll;和#include<bits/stdc++.h>是应该避免的网站。 -
可以说这些只是浪费时间。请阅读这些C++ books。更好的投资回报率。
-
查找“基于范围的 for 循环”。
-
@Jacob 因为它什么也没教你。它所教的东西,是以错误的方式来做的。没有竞争性编程这样的东西。
-
@Jacob 这是浪费时间,因为节省几次击键完全无关紧要 - 打字不是编写代码时花费时间的地方 - 思考才是。而且您会失去可读性 - 这更重要。