首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++容器异常

2012-03-25 
C++容器错误#include iostream#include fstream#include sstream#include algorithm#include str

C++容器错误
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std ;

typedef vector<int> VI ;
//typedef vector<VI> VVI ;

void input(VI& data)
{
ifstream in("abc.txt") ;

for(string s ; getline(in,s) ; )
{
int tmp ; 

for(istringstream sin(s) ; sin>>tmp ; )
{
data.push_back(tmp) ;
}
}
}

void print(const VI& result)
{
for(unsigned int i = 0 ; i < result.size() ; i++)
{
cout<< result[i] << " " ;
}

cout<<endl ;
}

int square(int tmp)
{
int result = 0 ; 
int t ;

while(tmp)
{
t = tmp%10 ; 
result += t*t ;
tmp /= 10 ;
}

return result ;
}

void psort(VI& data)
{
VI temp(data) ;

for(unsigned int i = 0 ; i < data.size() ; i++)
{
temp[i] = square(temp[i]) ;
}

int len = temp.size() ;

sort(temp.begin() , temp.begin()+len) ;

print(temp) ;
}

void output(const VI& data)
{
int len = data.size() ;

if(data.size())
{
sort(data.begin() , data.begin()+len) ;
print(data) ;
}
else
{
cout<<"It is empty!!!"<<endl;
}
}

int main()
{
VI data ;

input(data) ;

psort(data) ;

output(data) ;

return 0 ;

}


错误信息:

d:\vs8\vc\include\algorithm(2982) : error C3892: “_Next1”: 不能给常量赋值
1>d:\vs8\vc\include\algorithm(2983) : error C3892: “_Next1”: 不能给常量赋值
1>生成日志保存在“file://c:\Users\xswby\Documents\Visual Studio 2008\Projects\chart5_5\chart5_5\Debug\BuildLog.htm”
1>chart5_5 - 3 个错误,0 个警告
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========


[解决办法]

C/C++ code
#include <iostream>#include <fstream>#include <sstream>#include <algorithm>#include <string>#include <vector>using namespace std ;typedef vector<int> VI ;//typedef vector<VI> VVI ;void input(VI& data){    ifstream in("abc.txt") ;    for(string s ; getline(in,s) ; )    {        int tmp ;          for(istringstream sin(s) ; sin>>tmp ; )        {            data.push_back(tmp) ;        }    }}void print(const VI& result){    for(unsigned int i = 0 ; i < result.size() ; i++)    {        cout<< result[i] << " " ;    }    cout<<endl ;}int square(int tmp){    int result = 0 ;      int t ;    while(tmp)    {        t = tmp%10 ;          result += t*t ;        tmp /= 10 ;    }    return result ;}void psort(VI& data){    VI temp(data) ;    for(unsigned int i = 0 ; i < data.size() ; i++)    {        temp[i] = square(temp[i]) ;    }    int len = temp.size() ;    sort(temp.begin() , temp.begin()+len) ;    print(temp) ;}//传进来的是const, 还怎么排序 ?//void output(const VI& data)void output(VI& data){    int len = data.size() ;    if(data.size())    {        sort(data.begin() , data.begin()+len) ;        print(data) ;    }    else    {        cout<<"It is empty!!!"<<endl;    }}int main(){    VI data ;    input(data) ;    psort(data) ;    output(data) ;    return 0 ;}
[解决办法]
C/C++ code
    void output(/*const*/ VI& data)    {        int len = data.size() ;        if(data.size())        {            sort(data.begin() , data.begin()+len) ;            print(data) ;        }        else        {            cout<<"It is empty!!!"<<endl;        }    } 

热点排行