还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

fatal error "vector iterator + offset out of range" "standard C++ libraries out of range"

来源:清泛原创     2016-08-29 17:05:48    人气:     我有话说( 0 人参与)

代码如下:#include <iostream> #include <iterator> 使用back_inserter #include <algorithm> #include <vector> usin...

代码如下:
#include <iostream>  
#include <iterator>//使用back_inserter   
#include <algorithm>  
#include <vector>  
using namespace std;  
void main()  
{       
     vector<int> ivec;  
     try  
     {     
        fill_n(ivec.begin(),10,1);//error  should use fill_n (back_inserter(ivec), 10, 1);   
        for(vector<int>::iterator itbegin=ivec.begin(),itend=ivec.end();itbegin!=itend;++itbegin)  
            cout<<*itbegin<<endl;  
     }  
     catch (runtime_error err)  
     {    
        cerr << "Error: "<<err.what()<<endl;  
     }  
     catch(out_of_range or)  
     {  
         cerr << "Error: "<<or.what()<<endl;  
     }  
     catch(exception ex)  
     {  
        cerr << "Error: "<<ex.what()<<endl;  
     }  
        
}
解决方法:fill_n()函数将在vector中从头开始,将指定个数的元素设置为给定的值。fill_n函数假定对指定数量的元素做写操作是安全的。初学者常犯的错误的是:在没有元素的空容器上调用 fill_n 函数,因此需要使用back_inserter ,这种插入迭代器。当使用插入迭代器赋值时,则会在容器中添加一个新元素,其值等于赋值运算的右操作数的值。因此需将代码改为:

 

fill_n (back_inserter(ivec), 10, 1);

C++ vector

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: