一道简单的vector程序,求指导,该怎么解决
一道简单的vector程序,求指导
[code=C/C++][/code]#include<iostream>
#include<vector>
using namespace std;
vector<int>::iterator findint(vector<int>::iterator beg,vector<int>::iterator end,int val)
{
while(beg!=end){
if(beg==end)
break;
else
++beg;
}
return beg;
}
int main()
{
int ia[]={0,1,2,3,4,5,6};
vector<int> ivec(ia,ia+7);
int itsval;
cout<<"please input a number"<<endl;
cin>>itsval;
vector<int>::iterator it;
it=findint(ivec.begin(),ivec.end(),itsval);
if(it!=ivec.end())
cout<<itsval<<"is a element of the vector"<<endl;
else
cout<<itsval<<"isn't a element of the vector"<<endl;
return 0;
}
这是c++primer上一道习题 P315
可是输出的时候不对
我输入0-6之间的数任然显示"isn't a element of the vector"
我用gdb看了下执行步骤
17 int main()
18 {
19 int ia[]={0,1,2,3,4,5,6};
(gdb) l
20 vector<int> ivec(ia,ia+7);
21
22 int itsval;
23 cout<<"please input a number"<<endl;
24 cin>>itsval;
25
26 vector<int>::iterator it;
27 it=findint(ivec.begin(),ivec.end(),itsval);
28 if(it!=ivec.end())
29 cout<<itsval<<"is a element of the vector"<<endl;
(gdb) b 17
Breakpoint 1 at 0x804889c: file exercise9.11.cc, line 17.
(gdb) r
Starting program: /home/ztteng/workspace/c++/C++_Primer/exercise9.11
Breakpoint 1, main () at exercise9.11.cc:19
19 int ia[]={0,1,2,3,4,5,6};
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.25.el6.i686 libgcc-4.4.5-6.el6.i686 libstdc++-4.4.5-6.el6.i686
(gdb) s
20 vector<int> ivec(ia,ia+7);
(gdb) s
std::allocator<int>::allocator (this=0xbffff593) at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/bits/allocator.h:101
101 allocator() throw() { }
(gdb) s
__gnu_cxx::new_allocator<int>::new_allocator (this=0xbffff593) at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/ext/new_allocator.h:66
66 new_allocator() throw() { }
(gdb) s
std::vector<int, std::allocator<int> >::vector<int*> (this=0xbffff568, __first=0xbffff574, __last=0xbffff58c, __a=...)
at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/bits/stl_vector.h:299
299 : _Base(__a)
(gdb) s
std::_Vector_base<int, std::allocator<int> >::_Vector_base (this=0xbffff568, __a=...) at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/bits/stl_vector.h:108
108 : _M_impl(__a) { }
........................................
是不是内存分配出错啊?
求解
------解决方案--------------------
函数没写对。。。。
vector<int>::iterator findint(vector<int>::iterator beg,vector<int>::iterator end,int val)
{
while(beg!=end){
if(*beg==val)
break;
else
++beg;
}
[code=C/C++][/code]#include<iostream>
#include<vector>
using namespace std;
vector<int>::iterator findint(vector<int>::iterator beg,vector<int>::iterator end,int val)
{
while(beg!=end){
if(beg==end)
break;
else
++beg;
}
return beg;
}
int main()
{
int ia[]={0,1,2,3,4,5,6};
vector<int> ivec(ia,ia+7);
int itsval;
cout<<"please input a number"<<endl;
cin>>itsval;
vector<int>::iterator it;
it=findint(ivec.begin(),ivec.end(),itsval);
if(it!=ivec.end())
cout<<itsval<<"is a element of the vector"<<endl;
else
cout<<itsval<<"isn't a element of the vector"<<endl;
return 0;
}
这是c++primer上一道习题 P315
可是输出的时候不对
我输入0-6之间的数任然显示"isn't a element of the vector"
我用gdb看了下执行步骤
17 int main()
18 {
19 int ia[]={0,1,2,3,4,5,6};
(gdb) l
20 vector<int> ivec(ia,ia+7);
21
22 int itsval;
23 cout<<"please input a number"<<endl;
24 cin>>itsval;
25
26 vector<int>::iterator it;
27 it=findint(ivec.begin(),ivec.end(),itsval);
28 if(it!=ivec.end())
29 cout<<itsval<<"is a element of the vector"<<endl;
(gdb) b 17
Breakpoint 1 at 0x804889c: file exercise9.11.cc, line 17.
(gdb) r
Starting program: /home/ztteng/workspace/c++/C++_Primer/exercise9.11
Breakpoint 1, main () at exercise9.11.cc:19
19 int ia[]={0,1,2,3,4,5,6};
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.25.el6.i686 libgcc-4.4.5-6.el6.i686 libstdc++-4.4.5-6.el6.i686
(gdb) s
20 vector<int> ivec(ia,ia+7);
(gdb) s
std::allocator<int>::allocator (this=0xbffff593) at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/bits/allocator.h:101
101 allocator() throw() { }
(gdb) s
__gnu_cxx::new_allocator<int>::new_allocator (this=0xbffff593) at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/ext/new_allocator.h:66
66 new_allocator() throw() { }
(gdb) s
std::vector<int, std::allocator<int> >::vector<int*> (this=0xbffff568, __first=0xbffff574, __last=0xbffff58c, __a=...)
at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/bits/stl_vector.h:299
299 : _Base(__a)
(gdb) s
std::_Vector_base<int, std::allocator<int> >::_Vector_base (this=0xbffff568, __a=...) at /usr/lib/gcc/i686-redhat-linux/4.4.5/../../../../include/c++/4.4.5/bits/stl_vector.h:108
108 : _M_impl(__a) { }
........................................
是不是内存分配出错啊?
求解
------解决方案--------------------
函数没写对。。。。
vector<int>::iterator findint(vector<int>::iterator beg,vector<int>::iterator end,int val)
{
while(beg!=end){
if(*beg==val)
break;
else
++beg;
}