gpt4 book ai didi

c++ - 使用迭代器循环遍历迭代器 vector

转载 作者:行者123 更新时间:2023-12-02 05:07:30 26 4
gpt4 key购买 nike

我在最后的 for 循环中遇到错误:

error: conversion from '__normal_iterator<__gnu_cxx::__normal_iterator<int*, std::vector<int> >*,vector<__gnu_cxx::__normal_iterator<int*, std::vector<int> >>>' to non-scalar type '__normal_iterator<const int*,vector<int>>' requested

20 | for(vector<int>::const_iterator t=ind.begin(); t != ind.end(); ++t){

| ~~~~~~~~~^~

我一直在寻找类似问题的解决方案,但我仍然不明白我做错了什么。

#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,a;
vector<int>::iterator b;
cin>>n>>m;
vector<int> seq(n);
vector<vector<int>::iterator> ind;
for(int i=0;i<n;i++){
cin>>seq[i];
}
for(int i=0;i<m;i++){
cin>>a;
b=find(seq.begin(),seq.end(),a);
if(b!=seq.end()){
ind.push_back(b);
}
}
sort(ind.begin(),ind.end());
for(vector<int>::const_iterator t=ind.begin(); t != ind.end(); ++t){
cout<<*t;
}
return 0;
}

最佳答案

vector<int>::const_iteratorvector 的迭代器的int 。迭代器 vector 的迭代器是 vector<vector<int>::iterator>::const_iterator

为了避免输入此类怪物类型,请使用 auto :

for(auto t=ind.begin(); t != ind.end(); ++t){
cout<<*t;
}

或者当您从开始迭代到结束时,基于范围的循环:

for(auto t : ind){
cout<<t;
}

由于您没有包含错误(在撰写本文时),我仅修复了明显的错误。我想您需要取消引用迭代器来打印实际元素(即在上面的两个示例中添加 *)。

关于c++ - 使用迭代器循环遍历迭代器 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60642274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com