C++迭代器问题(或许)
不知道这是不是STL里面的bug。去掉该句注释就不会有问题//itr=nums.begin();
希望大神解惑
#include <iostream>
#include <vector>
#include <iterator>
#include <sstream>
using namespace std;
void print_vector(vector<int> vec);
int main(){
// cout<<"hello world"<<endl;
vector<int> nums;
while(true)
{
string str;
getline(cin,str);
istringstream input(str);
int temp_int;
while(input>>temp_int)
nums.push_back(temp_int);
// print_vector(nums);
getline(cin,str);
istringstream line2(str);
vector<int>::iterator itr=nums.begin();
while(line2>>temp_int)
{
//itr=nums.begin(); //加上该语句不会有问题
while(itr!=nums.end()&&*itr<temp_int)
{
printf("地址:%d %d\n",itr,*itr);
itr++;
}
if(itr==nums.end())
nums.push_back(temp_int);
else{
nums.insert(itr,temp_int);
}
//cout<<*itr<<endl;
print_vector(nums);
}
cout<<endl;
//print_vector(nums);
cout<<nums.at((nums.size()-1)/2)+1<<endl;
nums.clear();
}
system("pause");
return 0;
}
void print_vector(vector<int> vec){
vector<int>::iterator tempitr=vec.begin();
while(tempitr!=vec.end())
{
cout<<*tempitr<<" ";
tempitr++;
}
cout<<endl;
}