创设有10个元素的VECTOR对象,用迭代器把每个元素改为当前值的2倍并显示

创建有10个元素的VECTOR对象,用迭代器把每个元素改为当前值的2倍并显示
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec(10);
int ival;
cout << "Enter numbers:" << endl;
while (cin>>ival)
ivec.push_back(ival);
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
  {cout<<(*iter)*2<<endl;}
return 0;
}
程序0错误,但是现实不出来,不知道怎么回事

------解决方案--------------------
#include <iostream>
#include <vector>
using namespace std;

int main()
{
vector<int> v;
for (int i=0; i<10; i++)
{
v.push_back(i);
}

cout << "扩大前: " << endl;
for (int i=0; i<10; i++)
{
cout << v[i] << endl;
}


vector<int>::iterator iter = v.begin();
for (; iter != v.end(); iter++)
{
*iter *= 2;
}

cout << " 扩大后: " << endl;
iter = v.begin();
for (; iter != v.end(); iter++)
{
cout << *iter << endl;
}
}
------解决方案--------------------
C/C++ code
#include <vector>
#include <iostream>
#include <algorithm>
#include <boost/assign/std/vector.hpp> 
#include <boost/lambda/lambda.hpp>
using namespace std;
using namespace boost::assign; 
using namespace boost::lambda;

int _tmain(int argc, _TCHAR* argv[])
{  
    vector <int> ivec;
    ivec += 34,-23,56,7,9,12,50,89,3,10;
    for_each(ivec.begin(),ivec.end(),_1 = 2*_1);
    for_each(ivec.begin(),ivec.end(),cout<<_1<<' ');

    return 0;
}

------解决方案--------------------
C/C++ code

#include <iostream> 
#include <vector> 
using namespace std; 
int main() 
{ 
vector <int> ivec; //注意这里如果有10的话,那么你ivec就有20个元素了
int ival; 
cout < < "Enter numbers:" < < endl; 
while (cin>>ival) 
ivec.push_back(ival); 
for(vector <int>::iterator iter=ivec.begin();iter!=ivec.end();++iter) 
  {cout < <(*iter)*2 < <endl;} 
return 0; 
}

------解决方案--------------------
变量定义错了。。。
------解决方案--------------------
#include <iostream> 
#include <vector> 
using namespace std; 
int main() 

vector <int> ivec;
ivec.reserve(10);
int ival; 
cout < < "Enter numbers:" < < endl; 
while (cin>>ival) 
ivec.push_back(ival); 
for(vector <int>::iterator iter=ivec.begin();iter!=ivec.end();++iter) 
{cout < <(*iter)*2 < <endl;} 
return 0; 


------解决方案--------------------
ivec.reserve(10);
------解决方案--------------------
是你的在定义容器的时候ivec.reserve(10); 这句话 就是定义了10个 0;然后用push的时候是在10个0后面push的 所以总共是20个变量。。所以先输出10个0 在输出10个整型的2倍~~
------解决方案--------------------
探讨
for_each(ivec.begin(),ivec.end(),_1=2*_1);
for_each(ivec.begin(),ivec.end(),cout<<_1<<'');return0;

------解决方案--------------------
楼主也要控制一下输入的个数吧,输入到什么时候是个头啊,鉴于0的2倍还是0,就用0当结束输入标志吧。
C/C++ code

#include <iostream> 
#include <vector> 
using namespace std;

int main() 
{ 
    vector <int> ivec; 
    int ival; 
    cout << "Enter numbers:" << endl; 
    while (cin>>ival) 
    {
        if (ival == 0)
            break;
        ivec.push_back(ival);
    }
    cout << "The result is: << endl;
    for(vector <int>::iterator iter=ivec.begin();iter!=ivec.end();iter++) 
    {cout <<(*iter)*2 <<endl;} 
    return 0; 
}