为什么 STL 的东西大多只要 include 就行,而 boost 里的东西都要链接库才行? - V2EX
fyyz
V2EX    C

为什么 STL 的东西大多只要 include 就行,而 boost 里的东西都要链接库才行?

  •  
  •   fyyz Mar 27, 2016 3897 views
    This topic created in 3713 days ago, the information mentioned may be changed or developed.
    不是很明白。
    因为据说做 STL 的和 BOOST 的基本上是一伙人。
    13 replies    2016-03-30 16:05:54 +08:00
    choury
        1
    choury  
       Mar 27, 2016   1
    stl 的是在 libstdc++ 里面,默认已经给你链进去了
    vanxining
        2
    vanxining  
       Mar 27, 2016
    STL 每个编译器都不同,怎么可能跟 Boost 是同一班人。
    mushanshitiancai
        3
    mushanshitiancai  
       Mar 27, 2016 via Android
    stl 是标准里的,编译器必须有实现, boost 则不是
    abscon
        4
    abscon  
       Mar 27, 2016 via iPhone   1
    谁说 boost 都要链接库了?大部分都是 header only ,只需要 include 。
    当然你得先有一份 boost 源码
    hardware
        5
    hardware  
       Mar 27, 2016
    因为都在你的 ld path 里了
    gulucn
        6
    gulucn  
       Mar 27, 2016
    有一部分需要链接到库(如 thread),一部分不用
    Neveroldmilk
        7
    Neveroldmilk  
       Mar 27, 2016
    stl 的很多东西,只要是支持该标准的编译器,都默认内置实现了。 boost 都是自己搞起的,所以都要自己实现。
    bp0
        8
    bp0  
       Mar 27, 2016
    因为 STL 是 Standard Template Library ,而 BOOST 只是 BOOST 。

    当然 BOOST 中的一些内容已经被包含在 C++11 中了,但他还只是 BOOST 。
    seeker
        9
    seeker  
       Mar 27, 2016
    如果是 windows 东西都在 msvcr.dll 里面
    icenan2
        10
    icenan2  
       Mar 27, 2016
    首先 STL 全称叫“ Standard Template Library ”,只是一套板库,是不能直接编译的。你使用时包含一个头文件,给模板传递类型参数,叫模板实例化。而 boost 里并不全是模板库,所以有些东西是可以编译成 lib 供你 link 的
    wizardoz
        11
    wizardoz  
       Mar 28, 2016
    跟是几伙人没有关系。
    因为 STL 是标准库,所以链接的时候默认都是包含的。
    而 BOOST 是第三方的,所以链接的时候不会默认包含,所以需要人为指定。
    araraloren
        12
    araraloren  
       Mar 28, 2016
    楼上的大多数就是没搞明白 stl , stl 本身是模板库,是不能做成动态库的,而因为大多数 stl 依赖的东西最多都是标准函数之类的,所以只要包含头文件就可以使用了,你使用`<thread>`试试,不还是要链接`pthread`库( linux 下)
    eliteYang
        13
    eliteYang  
       Mar 30, 2016
    1.windows 自己的链接库,本身就是在自己 IDE 的环境里
    2.STL 大多数都是 headonly 的,也就是说没有 cpp
    3.boost 的大多数库也是 headonly ,也是不需要 lib 库的,只是少数库需要链接库

    如果你比较纠结的话,建议直接用 C++11 14 标准
    About     Help     Advertise     Blog     API     FAQ     Solana     3115 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 107ms UTC 13:43 PVG 21:43 LAX 06:43 JFK 09:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86