{"id":2115,"date":"2016-04-25T15:36:50","date_gmt":"2016-04-25T15:36:50","guid":{"rendered":"http:\/\/ellignostage.test\/?p=2115"},"modified":"2021-05-26T13:05:41","modified_gmt":"2021-05-26T18:05:41","slug":"librairie-boost-assign-pour-initialiser-rapidement-un-containeur","status":"publish","type":"post","link":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/","title":{"rendered":"Librairie Boost Assign pour initialiser rapidement un containeur"},"content":{"rendered":"\n<p><strong>Boost<\/strong> contient de nombreuses librairies qui sont d\u2019une grande utilit\u00e9 et parmi une de celles-ci la librairie <strong>boost&nbsp; assign<\/strong>. Bri\u00e8vement, cette librairie contient un ensemble d\u2019utilitaires qui permet d\u2019initialiser des containeurs de la STL. Dans mes taches courantes de tous les jours de programmeurs, j\u2019ai souvent besoin de prototyper rapidement, par exemple tester le comportement d\u2019un algorithme, on veut initialiser rapidement un containeur. Ci-dessous je pr\u00e9sente une s\u00e9rie de petits exemples d\u2019applications qui permettent d\u2019\u00eatre&nbsp; en op\u00e9rationnel avec cette librairie.<\/p>\n\n\n\n<p>Pour utiliser cette librairie on a besoin d\u2019inclure les fichiers suivants&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\n<pre><code class=\"\" data-line=\"\">\/\/ boost assign library\n#include &lt;boost\/assign.hpp&gt;                      \n#include &lt;boost\/assign\/list_of.hpp&gt;\n#include &lt;boost\/assign\/ptr_list_of.hpp&gt;\n#include &lt;boost\/assign\/ptr_list_inserter.hpp&gt;   \/\/ for &#039;ptr_push_back()&#039;, &#039;ptr_insert()&#039; and &#039;ptr_push_front()&#039;\n#include &lt;boost\/assign\/std\/vector.hpp&gt;          \/\/ for &#039;operator+=()&#039;\n<\/code><\/pre>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">&nbsp;Initialiser un vecteur<\/h3>\n\n\n\n<p>Pour initialiser un vector on utilise l\u2019operateur &nbsp;\u00ab&nbsp;+=&nbsp;\u00bb qui permet de donner des valeurs initiale sous forme d\u2019une liste (similaire a C++11 list initialiser).<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\n<pre><code class=\"\" data-line=\"\">\/\/ Boost Assign library\nstd::vector w_vec;\nw_vec += 1,2,3,4,5,6,7,8,9; \/\/ operator += list initialization\n<\/code><\/pre>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>on peut egalement utilizer un utilitaire<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\n<pre><code class=\"\" data-line=\"\">\/\/ assign library\nstd::vector w_value = list_of(1)(2)(3)(4)(5);  \/\/ initialize the vector\n<\/code><\/pre>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Il est possible d\u2019initialiser un vector de pointer egalement, dans cet exemple j\u2019utilise the \u00abbind adaptor\u00bb de C++11 pour de-allocation de la m\u00e9moire. Je vais revenir dans un autre blog sur ce nopuvel adaptor.<\/p>\n\n\n\n<p><strong>Vecteur de pointer<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\n<pre><code class=\"\" data-line=\"\">\/\/ Create a vector of pointer\nstd::vector&lt;int*&gt; w_vecptrInt; \nw_vecptrInt = list_of&lt;int*&gt;( new int(1))( new int (2))( new int(6))( new int(3));\nassert( w_vecptrInt.size()==4);\nauto w_first = w_vecptrInt.back();\nstd::cout &lt;&lt; &quot;The type of the pointer is &quot; &lt;&lt; typeid(w_first).name() &lt;&lt; &quot;\\n&quot;;\nstd::cout &lt;&lt; &quot;The value of the first element is &quot; &lt;&lt; *w_first &lt;&lt; &quot;\\n&quot;;\nif (!w_vecptrInt.empty())\n{\n\/\/ delete each element of the container in a simple manner\nstd::for_each( std::begin(w_vecptrInt),std::end(w_vecptrInt), \n\tstd::bind(::operator delete, _1));\n}\n<\/code><\/pre>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Boost container de pointer<\/strong><\/p>\n\n\n\n<p>Les container de pointer de la librairie boost peuvent etre egalement initialiser avec \u00ab\u00a0ptr_list_of\u00a0\u00bb<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\n<pre><code class=\"\" data-line=\"\">boost::ptr_vector w_testPtrListOf = ptr_list_of(1)(2)(6)(3);\n<\/code><\/pre>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Initialiser un vecteur de pair<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\n<pre><code class=\"\" data-line=\"\">\/\/ create a pair vector for testing\nstd::vector w_vofpair=pair_list_of(1,2)(2,3)(21,5)(3,6);\nstd::list w_keyList;\n\/\/ way to print the key of the pair element very efficiently\nfor( auto&amp; first : w_vofpair | map_keys) \/\/ range loop\n{\n  \/\/ copy to range\n  w_keyList.push_back(first);\n}\nassert( w_keyList.size() == w_vofpair.size());\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00e9sente quelques exemples de l\u2019utilisation de la librairie boost assign. Dans la vie de tous les jours d\u2019un programmeur on a souvent besoin de prototype rapidement et boost assign est un outil qui m\u00e9rite d\u2019\u00eatre connu.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-2115","post","type-post","status-publish","format-standard","hentry","category-trucs-et-astuces"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Librairie Boost Assign pour initialiser rapidement un containeur - Elligno<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Librairie Boost Assign pour initialiser rapidement un containeur - Elligno\" \/>\n<meta property=\"og:description\" content=\"Pr\u00e9sente quelques exemples de l\u2019utilisation de la librairie boost assign. Dans la vie de tous les jours d\u2019un programmeur on a souvent besoin de prototype rapidement et boost assign est un outil qui m\u00e9rite d\u2019\u00eatre connu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/\" \/>\n<meta property=\"og:site_name\" content=\"Elligno\" \/>\n<meta property=\"article:published_time\" content=\"2016-04-25T15:36:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-26T18:05:41+00:00\" \/>\n<meta name=\"author\" content=\"Elligno\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elligno\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/\"},\"author\":{\"name\":\"Elligno\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/person\\\/7f13e742ba13398847cccc0852fe03fd\"},\"headline\":\"Librairie Boost Assign pour initialiser rapidement un containeur\",\"datePublished\":\"2016-04-25T15:36:50+00:00\",\"dateModified\":\"2021-05-26T18:05:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/\"},\"wordCount\":218,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\"},\"articleSection\":[\"Trucs et astuces\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/\",\"name\":\"Librairie Boost Assign pour initialiser rapidement un containeur - Elligno\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#website\"},\"datePublished\":\"2016-04-25T15:36:50+00:00\",\"dateModified\":\"2021-05-26T18:05:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Librairie Boost Assign pour initialiser rapidement un containeur\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\",\"name\":\"Elligno\",\"description\":\"Site dev elligno\",\"publisher\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/elligno.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\",\"name\":\"Elligno Inc\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/favicon.png\",\"contentUrl\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/favicon.png\",\"width\":256,\"height\":256,\"caption\":\"Elligno Inc\"},\"image\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/person\\\/7f13e742ba13398847cccc0852fe03fd\",\"name\":\"Elligno\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d5d65a6272025dfbdbf8600bd75d9abcc5eede7e37fe620531e2d2c00f91464?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d5d65a6272025dfbdbf8600bd75d9abcc5eede7e37fe620531e2d2c00f91464?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d5d65a6272025dfbdbf8600bd75d9abcc5eede7e37fe620531e2d2c00f91464?s=96&d=mm&r=g\",\"caption\":\"Elligno\"},\"sameAs\":[\"https:\\\/\\\/elligno.com\"],\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/author\\\/panel-65ui89\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Librairie Boost Assign pour initialiser rapidement un containeur - Elligno","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/","og_locale":"fr_FR","og_type":"article","og_title":"Librairie Boost Assign pour initialiser rapidement un containeur - Elligno","og_description":"Pr\u00e9sente quelques exemples de l\u2019utilisation de la librairie boost assign. Dans la vie de tous les jours d\u2019un programmeur on a souvent besoin de prototype rapidement et boost assign est un outil qui m\u00e9rite d\u2019\u00eatre connu.","og_url":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/","og_site_name":"Elligno","article_published_time":"2016-04-25T15:36:50+00:00","article_modified_time":"2021-05-26T18:05:41+00:00","author":"Elligno","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Elligno","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/#article","isPartOf":{"@id":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/"},"author":{"name":"Elligno","@id":"https:\/\/elligno.com\/fr\/#\/schema\/person\/7f13e742ba13398847cccc0852fe03fd"},"headline":"Librairie Boost Assign pour initialiser rapidement un containeur","datePublished":"2016-04-25T15:36:50+00:00","dateModified":"2021-05-26T18:05:41+00:00","mainEntityOfPage":{"@id":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/"},"wordCount":218,"commentCount":0,"publisher":{"@id":"https:\/\/elligno.com\/fr\/#organization"},"articleSection":["Trucs et astuces"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/","url":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/","name":"Librairie Boost Assign pour initialiser rapidement un containeur - Elligno","isPartOf":{"@id":"https:\/\/elligno.com\/fr\/#website"},"datePublished":"2016-04-25T15:36:50+00:00","dateModified":"2021-05-26T18:05:41+00:00","breadcrumb":{"@id":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/elligno.com\/fr\/librairie-boost-assign-pour-initialiser-rapidement-un-containeur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/elligno.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Librairie Boost Assign pour initialiser rapidement un containeur"}]},{"@type":"WebSite","@id":"https:\/\/elligno.com\/fr\/#website","url":"https:\/\/elligno.com\/fr\/","name":"Elligno","description":"Site dev elligno","publisher":{"@id":"https:\/\/elligno.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/elligno.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/elligno.com\/fr\/#organization","name":"Elligno Inc","url":"https:\/\/elligno.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/elligno.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/elligno.com\/wp-content\/uploads\/2021\/06\/favicon.png","contentUrl":"https:\/\/elligno.com\/wp-content\/uploads\/2021\/06\/favicon.png","width":256,"height":256,"caption":"Elligno Inc"},"image":{"@id":"https:\/\/elligno.com\/fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/elligno.com\/fr\/#\/schema\/person\/7f13e742ba13398847cccc0852fe03fd","name":"Elligno","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/5d5d65a6272025dfbdbf8600bd75d9abcc5eede7e37fe620531e2d2c00f91464?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d5d65a6272025dfbdbf8600bd75d9abcc5eede7e37fe620531e2d2c00f91464?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d5d65a6272025dfbdbf8600bd75d9abcc5eede7e37fe620531e2d2c00f91464?s=96&d=mm&r=g","caption":"Elligno"},"sameAs":["https:\/\/elligno.com"],"url":"https:\/\/elligno.com\/fr\/author\/panel-65ui89\/"}]}},"_links":{"self":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts\/2115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/comments?post=2115"}],"version-history":[{"count":0,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts\/2115\/revisions"}],"wp:attachment":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/media?parent=2115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/categories?post=2115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/tags?post=2115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}