{"id":4855,"date":"2026-10-24T22:26:16","date_gmt":"2026-10-24T20:26:16","guid":{"rendered":"https:\/\/mariusbancila.ro\/blog\/?p=4855"},"modified":"2026-10-24T22:26:18","modified_gmt":"2026-10-24T20:26:18","slug":"the-cpp26-inplace_vector-container","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/","title":{"rendered":"The C++26 inplace_vector container"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The C++26 standard features a new container called <code>std::inplace_vector<\/code>, that sits in between the <code>std::array<\/code> and <code>std::vector<\/code> containers. It&#8217;s a container with a compiled-time fix capacity &#8211; like <code>std::array<\/code>, but a runtime variable size &#8211; like <code>std::vector<\/code>. In this article, we will discuss how it works and when to use it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A tale of two containers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before we discuss <code>std::inplace_vector<\/code>, let&#8217;s briefly look at the other two mentioned containers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>std::array<\/code> is a container with a fixed size and capacity known at compile time. A <code>std::array&lt;T, N><\/code> always holds <code>N<\/code> elements, not more, not less. When the array is constructed, all the <code>N<\/code> elements of it are default constructed, no matter how many elements you actually need. This also implies that the type <code>T<\/code> must be default construcible. Otherwise, you need to use workarounds, such as using <code>std::optional&lt;T><\/code>. <code>array<\/code> stores its elements contiguously in memory.<\/li>\n\n\n\n<li><code>std::vector<\/code> is a container with a variable size. Its elements are constructed only when they&#8217;re added, but they are allocated on the heap. <code>vector<\/code> is also a contiguous storage container.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">There are cases were you need the semantics of <code>std::array<\/code> for a fixed (maximum) number of elements, but mixed with those of <code>std::vector<\/code> for being able to increase and decrease the capacity. If you use a <code>std::array<\/code>, you need to use an additional counter that you increment and decrement as elements are added or removed. But decrementing the counter does not destruct the actual element of the array. You also need a sentinel to indicate a no-value. There is a lot of bookkeeping around such a solution. If you use a <code>std::vector<\/code>, you need to  ensure the maximum size is never exceeded, which also implies bookkeeping.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enter inplace_vector<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is what <code>std::inplace_vector<\/code> was designed for: bridge the two worlds of compile-time fixed capacity and run-time variable size while keeping the elements contiguous, in-place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The name might be confusing at first but it makes a lot of sense. <em>dynamic_array<\/em>,  <em>static_vector<\/em>, or <em>even stack_vector<\/em> have been proposed or used as alternatives for other implementations of a container with similar semantics. However, neither of these catches the true meaning of this container. The committee opted for <code>inplace_vector<\/code> because this expresses the best the fact that the elements of this container sit where its owner sits: it can be on the stack, it can be on the heap, or the static storage.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;inplace_vector>\n\nstd::inplace_vector&lt;int, 8> v;   \/\/ capacity 8, size 0, no heap allocation\nv.push_back(1);\nv.push_back(2);\nv.size();                        \/\/ 2\nv.capacity();                   \/\/ always 8<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>std::inplace_vector<\/code> is also a contiguous storage container. Its elements are only constructed when you add them, so T doesn&#8217;t need to be default-constructible. It has essentially the same interface as <code>std::vector<\/code>: iterators, <code>operator[]<\/code>, <code>insert<\/code>, <code>erase<\/code>, <code>emplace_back<\/code>, <code>resize<\/code>, <code>append_range<\/code>, and so on. It does not take an allocator parameter. This is the same idea as <code>boost::container::static_vector<\/code> and similar &#8220;static vector&#8221; types that game, embedded, and low-latency codebases have used for years.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What happens when it&#8217;s full? Since capacity can&#8217;t grow, the interface provides three flavors of insertion:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>push_back<\/code> \/ <code>emplace_back<\/code> that throw if capacity is exceeded.<\/li>\n\n\n\n<li><code>try_push_back<\/code> \/ <code>try_emplace_back<\/code> that return <code>nullptr<\/code> on failure and leave the container unchanged.<\/li>\n\n\n\n<li><code>unchecked_push_back<\/code> \/ <code>unchecked_emplace_back<\/code> that don&#8217;t throw but assume the precondition that <code>size() &lt; capacity()<\/code> and violating this precondition is undefined behavior.<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">std::inplace_vector&lt;int, 2> v{1, 2};\n\nv.push_back(3);                  \/\/ throws std::bad_alloc\nauto* p = v.try_push_back(3);    \/\/ returns nullptr on failure, v unchanged\nv.unchecked_push_back(3);        \/\/ precondition: size() &lt; capacity(); violating it is UB<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Use cases<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Typically, you can use <code>std::inplace_vector<\/code> when you know a fixed upper bound on the number of elements and want to avoid heap allocation. That includes embedded or freestanding environments, real-time and low-latency code where allocation is forbidden or unpredictable, small temporary buffers in hot loops, and fixed-size data embedded in other structs or passed across shared memory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To show a concrete example, let&#8217;s consider a 2D grid where each cell can have at most 8 neighbors. Pathfinding code like A* asks for neighbors millions of times per frame, so allocating a <code>std::vector<\/code> for each call is wasteful, while an <code>array&lt;Cell*, 8><\/code> needs a separate count.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;inplace_vector>\n#include &lt;print>\n\nstruct Cell { int x, y; };\n\nconstexpr int Width  = 5;\nconstexpr int Height = 4;\n\nstd::inplace_vector&lt;Cell, 8> neighbors(Cell c)\n{\n    std::inplace_vector&lt;Cell, 8> result;\n\n    for (int dy = -1; dy &lt;= 1; ++dy) {\n        for (int dx = -1; dx &lt;= 1; ++dx) {\n            if (dx == 0 &amp;&amp; dy == 0) continue;\n\n            int nx = c.x + dx;\n            int ny = c.y + dy;\n            if (nx >= 0 &amp;&amp; nx &lt; Width &amp;&amp; ny >= 0 &amp;&amp; ny &lt; Height)\n                result.push_back({nx, ny});\n        }\n    }\n    return result;\n}\n\nint main()\n{\n    for (Cell c : {Cell{0, 0}, Cell{4, 1}, Cell{2, 2}}) {\n        auto ns = neighbors(c);\n\n        std::print(\"({}, {}) has {} neighbors:\", c.x, c.y, ns.size());\n        for (Cell n : ns)\n            std::print(\" ({}, {})\", n.x, n.y);\n        std::println();\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The output of this program is the following:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">(0, 0) has 3 neighbors: (1, 0) (0, 1) (1, 1)\n(4, 1) has 5 neighbors: (3, 0) (4, 0) (3, 1) (3, 2) (4, 2)\n(2, 2) has 8 neighbors: (1, 1) (2, 1) (3, 1) (1, 2) (3, 2) (1, 3) (2, 3) (3, 3)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">See also<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cppreference.com\/cpp\/container\/inplace_vector\" target=\"_blank\" rel=\"noopener\">inplace_vector<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.sandordargo.com\/blog\/2026\/08\/26\/cpp26-inplace-vector\" target=\"_blank\" rel=\"noopener\">C++26: std::inplace_vector<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/gr8software.pl\/a-vector-without-the-heap-is-stdinplace_vector-right-for-embedded-c\/\" target=\"_blank\" rel=\"noopener\">A Vector Without the Heap: Is std::inplace_vector Right for Embedded C++?<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The C++26 standard features a new container called std::inplace_vector, that sits in between the std::array and std::vector containers. It&#8217;s a container with a compiled-time fix capacity &#8211; like std::array, but a runtime variable size &#8211; like std::vector. In this article, we will discuss how it works and when to use it. A tale of two &#8230; <a title=\"The C++26 inplace_vector container\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/\" aria-label=\"Read more about The C++26 inplace_vector container\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[7],"tags":[451,647,138,229],"class_list":["post-4855","post","type-post","status-publish","format-standard","hentry","category-c","tag-c","tag-c26","tag-library","tag-vector"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"c++,c++26,library,vector\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"The C++26 inplace_vector container\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-24T20:26:16+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-24T20:26:18+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"The C++26 inplace_vector container\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#article\",\"name\":\"The C++26 inplace_vector container\",\"headline\":\"The C++26 inplace_vector container\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"datePublished\":\"2026-10-24T22:26:16+02:00\",\"dateModified\":\"2026-10-24T22:26:18+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#webpage\"},\"articleSection\":\"C++, C++, C++26, library, vector\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"position\":4,\"name\":\"C++\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#listItem\",\"name\":\"The C++26 inplace_vector container\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#listItem\",\"position\":5,\"name\":\"The C++26 inplace_vector container\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/\",\"name\":\"The C++26 inplace_vector container\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2026\\\/10\\\/24\\\/the-cpp26-inplace_vector-container\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2026-10-24T22:26:16+02:00\",\"dateModified\":\"2026-10-24T22:26:18+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"The C++26 inplace_vector container","description":"","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/","robots":"max-image-preview:large","keywords":"c++,c++26,library,vector","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#article","name":"The C++26 inplace_vector container","headline":"The C++26 inplace_vector container","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"datePublished":"2026-10-24T22:26:16+02:00","dateModified":"2026-10-24T22:26:18+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#webpage"},"articleSection":"C++, C++, C++26, library, vector"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","position":4,"name":"C++","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#listItem","name":"The C++26 inplace_vector container"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#listItem","position":5,"name":"The C++26 inplace_vector container","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/","name":"The C++26 inplace_vector container","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2026-10-24T22:26:16+02:00","dateModified":"2026-10-24T22:26:18+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"The C++26 inplace_vector container","og:url":"https:\/\/mariusbancila.ro\/blog\/2026\/10\/24\/the-cpp26-inplace_vector-container\/","article:published_time":"2026-10-24T20:26:16+00:00","article:modified_time":"2026-10-24T20:26:18+00:00","twitter:card":"summary","twitter:title":"The C++26 inplace_vector container"},"aioseo_meta_data":{"post_id":"4855","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-10-24 19:10:18","updated":"2026-10-24 20:26:18","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"The C++26 standard features a new container called std::inplace_vector, that sits in between the std::array and std::vector containers. It&#8217;s a container with a compiled-time fix capacity &#8211; like std::array, but a runtime variable size &#8211; like std::vector. In this article, we will discuss how it works and when to use it. A tale of two&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++26<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">library<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">vector<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">C++26<\/span>","<span class=\"advgb-post-tax-term\">library<\/span>","<span class=\"advgb-post-tax-term\">vector<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 13 minutes ago","modified":"Updated 13 minutes ago"},"absolute_dates":{"created":"Posted on October 24, 2026","modified":"Updated on October 24, 2026"},"absolute_dates_time":{"created":"Posted on October 24, 2026 10:26 pm","modified":"Updated on October 24, 2026 10:26 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-1gj","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=4855"}],"version-history":[{"count":9,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4855\/revisions"}],"predecessor-version":[{"id":4864,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4855\/revisions\/4864"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=4855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=4855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=4855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}