{"id":19683,"date":"2022-11-07T11:09:42","date_gmt":"2022-11-07T05:39:42","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/"},"modified":"2022-11-07T11:09:42","modified_gmt":"2022-11-07T05:39:42","slug":"solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/","title":{"rendered":"[Solved] What is the most efficient way to check if a C++ container is empty? [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-43501563\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"43501563\" data-parentid=\"43500633\" data-score=\"3\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>All three options to check for empty container are more or less equivalent. Using <code>empty()<\/code> shows (as denoted in the comments already) most obviously your intention and as a little bonus, it is even the shortest one to write (that&#8217;s for the lazy ones like me&#8230;).<\/p>\n<p>How it is implemented? Vendor specific, probably inlined. Option 1 being used for is not unlikely, but not guaranteed.<\/p>\n<p>Classes are more or less a collection of data of whatever appropriate type. Their internal structure <em>must<\/em> be known at compile time and thus <em>must<\/em> be always fix <sup>*)<\/sup> \u2013 and so, in consequence is their size (must be&#8230;).<\/p>\n<p>sizeof(c) will return this fixed size, even for containers, no matter how many elements you have placed in there, and this is why <code>sizeof(c)<\/code> is wrong (actually, it can never get 0, as mentioned by NathanOliver in his answer, but even if it could, it would be constantly 0 then even if the container was <em>not<\/em> empty).<\/p>\n<p><\/p>\n<p>To illustrate <code>sizeof<\/code>: Lets look at some standard containers (I&#8217;ll leave out the public interface, just concentrate on the data members):<\/p>\n<pre><code>template &lt;typename T&gt;\nvector\n{\n    size_t capacity;\n    size_t size;\n    T* data;\n};\n<\/code><\/pre>\n<p>This is roughly all a vector needs. The data contained is stored in some array allocated somewhere on the heap, the only thing that is part of the vector <em>class<\/em> is the pointer to. <code>sizeof<\/code> such a vector is likely to be 32 (assuming size_t and pointers being 8 bytes large, as on modern 64 bit hardware, so you get 24 bytes for the members and another 8 for the pointer to the vtable, provided this vector class having virtual members) &#8212; <em>constantly<\/em>.<\/p>\n<pre><code>template&lt;typename T&gt;\nclass list\n{\n    class Node\n    {\n       Node* next;\n       Node* previous;\n       T data;\n    };\n    Node* head;\n    Node* tail;\n};\n<\/code><\/pre>\n<p>Again &#8211; two pointers internally only, content is allocated inside the nodes somewhere on the heap. <code>head<\/code> and\/or <code>tail<\/code> <em>might<\/em> be some dummy nodes for easier use within <code>begin()<\/code> and <code>end()<\/code>, but if so, that&#8217;s an implementation detail&#8230; sizeof(list) would then most likely be 24 &#8212; constantly.<\/p>\n<p><\/p>\n<p><sup>*)<\/sup><br \/>\n&#8220;always fix&#8221; &#8211; during compile time and during runtime of your compiled program; sizes <em>can<\/em> vary if you compile for different machines (e. g. the vector and list above might have sizes of 16 and 12 if compiled for older 32 bit hardware). Sizes can even vary from one compilation to the other one e. g. due to changed compiler flags (e. g. changing default alignment, &#8230;). But during compilation and once compiled, <code>sizeof<\/code> is fix.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved What is the most efficient way to check if a C++ container is empty? [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] All three options to check for empty container are more or less equivalent. Using empty() shows (as denoted in the comments already) most obviously your intention and as a little bonus, it is even the shortest one to write (that&#8217;s for the lazy ones like me&#8230;). How it is implemented? Vendor specific, probably inlined. &#8230; <a title=\"[Solved] What is the most efficient way to check if a C++ container is empty? [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\" aria-label=\"More on [Solved] What is the most efficient way to check if a C++ container is empty? [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,761],"class_list":["post-19683","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-stl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] What is the most efficient way to check if a C++ container is empty? [closed] - JassWeb<\/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:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] What is the most efficient way to check if a C++ container is empty? [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] All three options to check for empty container are more or less equivalent. Using empty() shows (as denoted in the comments already) most obviously your intention and as a little bonus, it is even the shortest one to write (that&#8217;s for the lazy ones like me&#8230;). How it is implemented? Vendor specific, probably inlined. ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-07T05:39:42+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\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:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] What is the most efficient way to check if a C++ container is empty? [closed]\",\"datePublished\":\"2022-11-07T05:39:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\"},\"wordCount\":405,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"stl\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\",\"name\":\"[Solved] What is the most efficient way to check if a C++ container is empty? [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-07T05:39:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] What is the most efficient way to check if a C++ container is empty? [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] What is the most efficient way to check if a C++ container is empty? [closed] - JassWeb","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:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] What is the most efficient way to check if a C++ container is empty? [closed] - JassWeb","og_description":"[ad_1] All three options to check for empty container are more or less equivalent. Using empty() shows (as denoted in the comments already) most obviously your intention and as a little bonus, it is even the shortest one to write (that&#8217;s for the lazy ones like me&#8230;). How it is implemented? Vendor specific, probably inlined. ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/","og_site_name":"JassWeb","article_published_time":"2022-11-07T05:39:42+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] What is the most efficient way to check if a C++ container is empty? [closed]","datePublished":"2022-11-07T05:39:42+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/"},"wordCount":405,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","stl"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/","name":"[Solved] What is the most efficient way to check if a C++ container is empty? [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-07T05:39:42+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-most-efficient-way-to-check-if-a-c-container-is-empty-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] What is the most efficient way to check if a C++ container is empty? [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/19683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=19683"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/19683\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=19683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=19683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=19683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}