Note that there are some explanatory texts on larger screens.

plurals
  1. POunable to push items in vector and list in C++?
    primarykey
    data
    text
    <p>This is a basic merge sort program:</p> <p>The problem is when I try to push item in to "vector merged", nothing happens. (Please refer the gdb data below the code)</p> <pre><code>vector&lt;long&gt; merge(vector&lt;long&gt; &amp;L, vector&lt;long&gt; &amp;R){ int i = 0; int j = 0; vector&lt;long&gt; merged; while((i &lt; L.size())&amp;&amp;(j &lt; R.size())){ if ((L[i] &lt;= R[j])){ merged.push_back(L[i]); i++; }else{ merged.push_back(R[j]); j++; } while(i &lt; L.size()) { merged.push_back(L[i]); i++; } while(j &lt; R.size()) { merged.push_back(R[j]); j++; } return merged; } } </code></pre> <p>//===================================GDB DATA===================================</p> <pre><code>(gdb) n 52 int i = 0; (gdb) 53 int j = 0; (gdb) 54 vector&lt;long&gt; merged; (gdb) print i $2 = 0 (gdb) print merged $3 = {&lt;std::_Vector_base&lt;long, std::allocator&lt;long&gt; &gt;&gt; = { _M_impl = {&lt;std::allocator&lt;long&gt;&gt; = {&lt;__gnu_cxx::new_allocator&lt;long&gt;&gt; = {&lt;No data fields&gt;}, &lt;No data fields&gt;}, _M_start = 0x7fffffffdcd0, _M_finish = 0x7fffffffdcf0, _M_end_of_storage = 0x7fffffffdde0}}, &lt;No data fields&gt;} (gdb) print *(merged._M_impl._M_start)@merged.size() $4 = {140737488346528, 4199556, 140737488346432, 140737488346656} Problem I: Why the merged vector is not null? Or did I used wrong gdb command?? But same command works on other vectors in this program.. (gdb) $5 = {140737488346528, 4199556, 140737488346432, 140737488346656} (gdb) n 56 while((i &lt; L.size())&amp;&amp;(j &lt; R.size())){ (gdb) print *(merged._M_impl._M_start)@merged.size() $6 = {140737488346528, 4199556, 140737488346432, 140737488346656} (gdb) n 57 if ((L[i] &lt;= R[j])){ (gdb) print L[i] $7 = (long &amp;) @0x6060b0: 31616136 (gdb) print R[i] $8 = (long &amp;) @0x6060d0: 1873051691 (gdb) n 58 merged.push_back(L[i]); (gdb) print *(merged._M_impl._M_start)@6 $14 = {140737488346528, 4199556, 140737488346432, 140737488346656, 6316272, 6316280} // Before any push_back operation, dump the content of merged. (gdb) n 59 i++; // Question 2, Push_back does not work... (gdb) print *(merged._M_impl._M_start)@1 $17 = {140737488346528} (gdb) print *(merged._M_impl._M_start)@2 $18 = {140737488346528, 4199556} (gdb) print *(merged._M_impl._M_start)@8 $19 = {140737488346528, 4199556, 140737488346432, 140737488346656, 6316272, 6316280, 6316280, 4205125} </code></pre> <p>Could anyone give me a hand??</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload