I write my first code using vector and list. When I run it,
segmentation fault.
Try to debug it, but it can not pass linking with -g option.
What is the error with it?
Thanks a lot.
John
----------------------------------------------------------
The code is attached:
#include <iostream>
#include <vector>
#include <list>
#include <algorithm>
using namespace std;
typedef struct{
int ID;
double time;
}node;
vector<node> myvector(){//Define a function that return a vector,
//can I do this?
vector< node > v;
for(int i = 1; i < 7; i++){
v[i].ID = i;
v[i].time = i * 1.1;
}
cout<<"v:"<<end l;
for(int i = 0; i < v.size(); ++i){
cout<<"i:"<<i<< " ID:"<< v[i].ID <<" time:"<<v[i].time <<endl;
}
return v;
}
void mylist(list< int > &l){//call-by-reference to bring the list
//back to main()
for(int i = 10; i < 16; i++){
l.push_back(i);
}
cout<<"l:"<<end l;
list<int>::iter ator pos;
for(pos = l.begin(); pos != l.end(); ++pos){
cout<<"pos:"<<* pos<<endl;
}
}
int main()
{
vector< node > v1;
v1 = myvector();//get the vector from myvector().
cout<<"v1:"<<en dl;
for(int i = 0; i < v1.size(); ++i){
cout<<"i1:"<<i< <" ID1:"<< v1[i].ID <<" time1:"<<v1[i].time <<endl;
}
list< int > l1;
mylist(l1);
cout<<"l1:"<<en dl;
list< int >::iterator pos;
for(pos = l1.begin(); pos != l1.end(); ++pos){
cout<<"pos1:"<< *pos<<endl;
}
list< int* > l2;//declare a list of int pointer, can I do this?
int a1 = 100;
int a2 = 200;
l2.push_back(&a 1);
l2.push_back(&a 2);
cout<<"&a1:"<<& a1<<" &a2:"<<&a2<<end l;
cout<<"l2-a1:"<<l2.front( )<<" l2-a2:"<<l2.back() <<endl;
list< int* >::iterator pos1;
pos1 = l2.begin();
cout<<"a1:"<<*( *pos1)<<endl;
cout<<"a2:"<<*( l2.end());
}
---------------------------------------------------
Error message, when I use: g++ -o -g vector vector.cc
$g++ -o -g vector vector.cc
vector(.rodata+ 0x0): multiple definition of `_fp_hw'
/usr/lib/crt1.o(.rodata+ 0x0): first defined here
vector(.init+0x 0): In function `_init':
: multiple definition of `_init'
/usr/lib/crti.o(.init+0x 0): first defined here
vector(.text+0x 0): In function `_start':
: multiple definition of `_start'
/usr/lib/crt1.o(.text+0x 0): first defined here
vector(.fini+0x 0): In function `_fini':
: multiple definition of `_fini'
/usr/lib/crti.o(.fini+0x 0): first defined here
vector(*ABS*+0x 804d84c): multiple definition of
`_GLOBAL_OFFSET _TABLE_'
/usr/lib/crt1.o(.got.plt +0x0): first defined here
vector(.rodata+ 0x4): multiple definition of `_IO_stdin_used '
/usr/lib/crt1.o(.rodata+ 0x4): first defined here
vector(.data+0x 0): In function `__data_start':
: multiple definition of `__data_start'
/usr/lib/crt1.o(.data+0x 0): first defined here
/tmp/cctWTqCU.o(.tex t+0x23c): In function `mylist(list<in t,
allocator<int> > &)':
: multiple definition of `mylist(list<in t, allocator<int> > &)'
vector(.text+0x 258): first defined here
/usr/bin/ld: Warning: size of symbol `mylist(list<in t, allocator<int>
&)' changed from 270 to 278 in /tmp/cctWTqCU.o
/tmp/cctWTqCU.o(.tex t+0x354): In function `main':
: multiple definition of `main'
vector(.text+0x 368): first defined here
/usr/bin/ld: Warning: size of symbol `main' changed from 1457 to 1518
in /tmp/cctWTqCU.o
/usr/lib/crt1.o(.dynamic +0x0): multiple definition of `_DYNAMIC'
collect2: ld returned 1 exit status
$