#include
<
iostream
>
#include
<
vector
>
#include
<
string
>
#include
<
algorithm
>
#include
<
iterator
>
using
namespace
std;
int
main() { vector
<
string
>
coll;
/*
read all words from the standard input * - source: all strings until end-of-file (or erro) * - destination: coll(inserting)
*/
copy (istream_iterator
<
string
>
(cin),
//
start of source
istream_iterator
<
string
>
(),
//
end of source
back_inserter(coll));
//
sort elements
sort (coll.begin(), coll.end());
/*
print all elements without duplicates * - source: coll * - destination: standard output (with newline between elements)
*/
unique_copy (coll.begin(), coll.end(),
//
source
ostream_iterator
<
string
>
(cout,
"
\n
"
));
//
destination
return
0
; }
hello.o: In function `main
'
:
hello.cpp:(.text
+
0x41
): undefined reference to `std::cin
'
hello.cpp:(.text
+
0xd1
): undefined reference to `std::cout
'
hello.o: In function `__static_initialization_and_destruction_0(
int
,
int
)
'
:
hello.cpp:(.text
+
0x19e
): undefined reference to `std::ios_base::Init::Init()
'
hello.cpp:(.text
+
0x1a3
): undefined reference to `std::ios_base::Init::
~
Init()
'
hello.o: In function `std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::
~
istream_iterator()
'
:
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiED2Ev[_ZNSt16istream_iteratorISscSt11char_traitsIcEiED5Ev]
+
0x10
): undefined reference to `std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
::
~
basic_string()
'
hello.o: In function `std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::istream_iterator(std::basic_istream
<
char
, std::char_traits
<
char
>
>&
)
'
:
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2ERSi[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5ERSi]
+
0x24
): undefined reference to `std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
::basic_string()
'
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2ERSi[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5ERSi]
+
0x41
): undefined reference to `std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
::
~
basic_string()
'
hello.o: In function `std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::istream_iterator()
'
:
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2Ev[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5Ev]
+
0x24
): undefined reference to `std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
::basic_string()
'
hello.o: In function `std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::istream_iterator(std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
const
&
)
'
:
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2ERKS2_[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5ERKS2_]
+
0x2f
): undefined reference to `std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
::basic_string(std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
const
&
)
'
hello.o: In function `std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::_M_read()
'
:
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiE7_M_readEv[std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::_M_read()]
+
0x29
): undefined reference to `std::basic_ios
<
char
, std::char_traits
<
char
>
>
::
operator
void
*
()
const
'
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiE7_M_readEv[std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::_M_read()]
+
0x61
): undefined reference to `std::basic_istream
<
char
, std::char_traits
<
char
>
>&
std::
operator
>><
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
(std::basic_istream
<
char
, std::char_traits
<
char
>
>&
, std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>&
)
'
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiE7_M_readEv[std::istream_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
,
char
, std::char_traits
<
char
>
,
int
>
::_M_read()]
+
0x7f
): undefined reference to `std::basic_ios
<
char
, std::char_traits
<
char
>
>
::
operator
void
*
()
const
'
hello.o: In function `
void
std::__insertion_sort
<
__gnu_cxx::__normal_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>*
, std::vector
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
, std::allocator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
>
>
>
>
(__gnu_cxx::__normal_iterator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>*
, std::vector
<
std::basic_string
<
char
, std::char_traits
<
char
>
, std::allocator
<
char
>
>
, std::allocator
<
std::basic_string
<
char
, std::char_traits
<
char
>
, ……
网上的解释是:“ you need to add -lstdc++, or use 'g++' rather than 'gcc' as your driver program.”,也就是说如果想要使用g++编译程序的话,那么链接时需要添加“-Istdc++”。
关于g++,让我想起了,在ubuntu下一开始安装完code::blocks的时候,提示需要安装g++。原来code::blocks内置编译器使用的是g++,但是为什么在建工程的时候,提示使用的编译器是gcc呢??
这就引来了一个问题:“gcc和g++的区别和联系是什么?”网上搜了一下“gcc和g++”(http://www.yuanma.org/data/2007/0406/article_2498.htm),整理下来有这么几条是有用的: