c++ - 无法在 STL 中打印一组 vector 的元素

标签 c++ vector stl set

我是 STL 贴图和 vector 的新手。我正在尝试打印 vector 集中存在的元素。最后一个 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 '='

最佳答案

您的 str 迭代器需要是 const,因为不可能改变集合的元素。

vector<int>::const_iterator str;

我不是 auto 的忠实拥护者,但在这种情况下,如果您使用它,则不需要知道迭代器类型是什么

for (auto str = itr->begin(); str != itr->end(); ++str)

关于c++ - 无法在 STL 中打印一组 vector 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51497650/

相关文章:

c++ - 第一个参数没有从 'A' 到 'A &&' 的已知转换

c++ - GDB 在操作 SSE2 寄存器时报告 EXC_BAD_ACCESS

c++ - 数组相关错误 - 无效类型..?

c++ - 仅威胁独特的字符串——什么是更快的 vector<std::string> 或只是 std::string

c++ - 使用 STL 类的 typdef,如 map 、列表等

c++ - 访问 C 中的类变量(Arduino Timezone 库)

java - 计算 vector int[]中 "0"位置之间的 "1"位置总数

c++ - 插入具有没有复制构造函数的对象的 vector

c++ - 并发写入 vector<bool>

c++ - 首选哪种数据结构而不是操作多个 vector