Only_為_の 发表于 2013-11-8 09:55:49

C++段错误

#include <iostream>
#include <vector>

using namespace std;

int main()
{
      vector<int> ivec = {0,1,2,3,4,5,6,7,8,9};
      int num;
      char c;
      for(auto i = ivec.begin();i != ivec.end();i+=2)
      {
                cout << ivec[*i] + ivec[*i]+1 << endl;
      }
      auto beg = ivec.begin();
      auto end = ivec.end();
      auto mid = ivec.begin() + (end-beg) / 2;
      for(int i = 0;beg != mid;beg++,i++)
      {
                cout << *(beg+=i) + *(end-=(1+i))<< endl;
      }
      return 0;
}


friendan 发表于 2013-11-8 09:55:50

本帖最后由 friendan 于 2013-11-11 10:09 编辑

题目:使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出来。
        改写你的程序,这次要求先输出第1个和最后1个元素的和,
        接着输出第2个和倒数第2个的元素的和,以此类推。


效果截图:


代码:
#include <iostream>
#include <vector>

using namespace std;

int main()
{
      //题目:使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出来。
      //改写你的程序,这次要求先输出第1个和最后1个元素的和,
      //接着输出第2个和倒数第2个的元素的和,以此类推。)
      vector<int> ivec;
                for(int i=0;i<10;i++)
                        ivec.push_back(i);//0~9

                //将每对相邻整数的和输出来
                //0和1相邻,1和2相邻,2和3相邻......
                for(vector<int>::iterator iter=ivec.begin();;)
                {
                        int a=*iter;
                        if(++iter==ivec.end())
                              break;
                        int b=*iter;
                        cout<<a+b<<" ";
                }
                cout<<endl;

                //输出第1个和最后1个元素的和,
         //接着输出第2个和倒数第2个的元素的和,以此类推。
                //0 1 2 3 4 5 6 7 8 9
                vector<int>::iterator iterA=ivec.begin();
                vector<int>::iterator iterB=ivec.end();
                iterB--;
                int count=ivec.size()/2;
                while(count>0)
                {
                        cout<<*iterA+*iterB<<" ";
                        iterA++;
                        iterB--;
                        count--;
                }
                cout<<endl;
      
      return 0;
}


仰望天上的光 发表于 2013-11-8 16:36:26

LZ啊,首先auto这种类型是C++11里新出现的,我没有学过C++11。。。不过我觉得
for(auto i = ivec.begin();i != ivec.end();i+=2)
         {
               cout << ivec[*i] + ivec[*i]+1 << endl;
         }
要改为
for(auto i = ivec.begin();i != ivec.end();i+=2)
         {
               cout<<* i+ *(i+1) << endl;
         }

乱闯 发表于 2013-11-8 16:53:25

{:1_1:}我不看下面 的   LZ你确定 你头文件导对了吗?
#include <iostream>
#include <vector>

没加 .h

Only_為_の 发表于 2013-11-8 21:08:27

仰望天上的光 发表于 2013-11-8 16:36 static/image/common/back.gif
LZ啊,首先auto这种类型是C++11里新出现的,我没有学过C++11。。。不过我觉得
for(auto i = ivec.begin(); ...

题目是这样的(使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出出来。改写你的程序,这次要求先输出第1个和最后1个元素的和,接着输出第2个和倒数第2个的元素的和,以此类推。)

Only_為_の 发表于 2013-11-8 21:10:05

乱闯 发表于 2013-11-8 16:53 static/image/common/back.gif
我不看下面 的   LZ你确定 你头文件导对了吗?
#include
#include


C++11统一不见使用.h后缀,c里面原有的头文件,C++11中去掉.h再在前面加上c表示

Only_為_の 发表于 2013-11-8 21:13:26

Only_為_の 发表于 2013-11-8 21:08 static/image/common/back.gif
题目是这样的(使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出出来。改写 ...

以前没学过C++,自己也是刚学。题目要用迭代器,代码被我改的乱七八糟。

乱闯 发表于 2013-11-8 22:23:48

Only_為_の 发表于 2013-11-8 21:10 static/image/common/back.gif
C++11统一不见使用.h后缀,c里面原有的头文件,C++11中去掉.h再在前面加上c表示

{:1_1:}谢谢 LZ指正我是做Java的目前正在学习c/c++

tjf 发表于 2013-11-11 19:48:16

完全看不懂。来学习学习

Only_為_の 发表于 2013-11-12 08:08:58

friendan 发表于 2013-11-11 10:08 static/image/common/back.gif
题目:使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出来。
        改写你的程序, ...

谢谢帮忙,我在你的代码基础上修改了一下/*请使用迭代器重做3.3.3节(第94页)的最后一个练习。
*/
#include <iostream>
#include <vector>

using namespace std;

int main()
{
      vector<int> ivec;
      for(int i=0;i<10;i++)
      {
                ivec.push_back(i);
      }
      for(auto it=ivec.begin();it != ivec.end();it++)
      {
                int a = *it;
                int b = *(it+1);
                cout << a+b << " ";
      }
      cout << endl;
      int count = ivec.size()/2;
      for(auto itA=ivec.begin(),itB=ivec.end()-1;count !=0;itA++,itB--)
      {
                cout << *itA + *itB <<" ";
                count--;
      }
      cout << endl;
      return 0;
}

Only_為_の 发表于 2013-11-12 08:13:56

页: [1]
查看完整版本: C++段错误