注册 登录
编程论坛 C++教室

push_back的问题

小亦庄葛三娘 发布于 2017-03-09 15:20, 1814 次点击
程序代码:
int main()
{   
    vector<int> ivec;
    int ival, sum = 0;
    while(cin >> ival)
        ivec.push_back(ival);
        
    for(int ix = 0; ix < ivec.size(); ++ix)
        
        sum += ivec[ix];
        
    int average = sum / ivec.size();
   
    cout << "sum of " << ivec.size() << " elements: " << sum << ". average: " << average << endl;
   
    return 0;
}


请问这一行的作用是什么ivec.push_back(ival;为什么这一行是必须的;我试图删除了这行,打印出sum和average的结果都是0.
4 回复
#2
rjsp2017-03-09 15:31
好奇怪的问题
#3
Erlosshex2017-03-09 15:37
首先你申明了一个名为ivec的容器元素是int的vector容器,ivec.push_back(ival)是将ival插入到ivec容器里,如果没有这个函数的,容器ivec就是空的,所以你要往ivec里存入元素而且是在ivec的后面插入,那么就需要push_back函数。
#4
rjsp2017-03-09 15:49
程序代码:
#include <iostream>
#include <vector>
using namespace std ;

int main( void )
{  
    vector<int> vec;
    for( int val; cin>>val; )
        vec.push_back( val );

    int sum = 0;
    for( size_t i=0; i!=vec.size(); ++i )
        sum += vec[i];

    double avg = vec.empty() ? 0.0 : sum*1.0/vec.size();

    cout << "count   = " << vec.size() << '\n';
    cout << "sum     = " << sum << '\n';
    cout << "average = " << avg << endl;

    return 0;
}

程序代码:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>
using namespace std;

int main( void )
{  
    vector<int> vec;
    copy( istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(vec) );

    int sum = accumulate( vec.begin(), vec.end(), int() );

    double avg = vec.empty() ? 0.0 : sum*1.0/vec.size();

    cout << "count   = " << vec.size() << '\n';
    cout << "sum     = " << sum << '\n';
    cout << "average = " << avg << endl;

    return 0;
}
#5
小亦庄葛三娘2017-03-10 13:56
回复 3楼 Erlosshex
明白了,多谢
1