I've never had a use for linked lists (yet), but I have a soft spot for them. It was while learning python and creating my own linked list class, that programming finally "clicked" for me. Instead of needing to look at the tutorial and just copy/paste, I could actually create every method on my own. 🙂
@24:10, i think in the 'merge' operation of a std::list, nodes from one list ( 'other' in this context) are reorganized into another list (list). This is done by adjusting the next and previous pointers of the nodes, rather than moving or copying the data they contain. This makes the merge operation more efficient than similar operations on other data structures, like arrays or vectors. After the merge operation, ' other' no longer contains any nodes. Its internal pointer to its first node (i.e., its "head") is set to nullptr, giving the impression that the list is now empty. In essence, 'other' as a standalone list no longer contains any elements. However, it's important to note that the nodes from 'other' have not been destroyed or removed. Instead, they've been linked into list. This is the beauty of the linked list data structure and the merge operation: it can reorganize data efficiently by manipulating pointers, without the need to physically move or copy the data. That's my understanding of merge in std::list. Thanks for the great video Mike! 👏 I am watching the whole STL series for the second time and learning new thingS.
thanks if you touch any topics ,please discuss deeply by showing cpprefferance , and this helps learning when u talk half an hour and show everything inside out.god bless u@@MikeShah
@4:16 When you say as long as we have iterator , this also mean we are having O(i) if i is the position of the list in the std::list object right? it wouldn't be O(1) if we calculate iterator part too.
Hey mike I have a question -> First look at this code -> int main() { std::list li = { 321, 432, 12, 34, 531 }; std::list::iterator it = li.begin(); for(it; it != li.end(); it++){ std::cout
Hmm, perhaps after the final node, the 'next' pointer points back to the head then -- that seems to be the behavior I'm getting here: godbolt.org/z/fYcv1Yjz7 This still is behavior that I would not tend to rely on :)
I've never had a use for linked lists (yet), but I have a soft spot for them. It was while learning python and creating my own linked list class, that programming finally "clicked" for me. Instead of needing to look at the tutorial and just copy/paste, I could actually create every method on my own. 🙂
@24:10, i think in the 'merge' operation of a std::list, nodes from one list ( 'other' in this context) are reorganized into another list (list). This is done by adjusting the next and previous pointers of the nodes, rather than moving or copying the data they contain. This makes the merge operation more efficient than similar operations on other data structures, like arrays or vectors.
After the merge operation, ' other' no longer contains any nodes. Its internal pointer to its first node (i.e., its "head") is set to nullptr, giving the impression that the list is now empty. In essence, 'other' as a standalone list no longer contains any elements. However, it's important to note that the nodes from 'other' have not been destroyed or removed. Instead, they've been linked into list. This is the beauty of the linked list data structure and the merge operation: it can reorganize data efficiently by manipulating pointers, without the need to physically move or copy the data. That's my understanding of merge in std::list. Thanks for the great video Mike! 👏 I am watching the whole STL series for the second time and learning new thingS.
Awesome! Yes, linked list can really do some neat things :)
Keep up the good work Mr Mike this video has been very helpful. Your teaching method is one of the best I have seen on the internet
Cheers, thank you!
Just a heads uo; Splice can also be used to move an element within a list. Details in cppreference std::list::splice.
Neat -- it would be a flaw in the design in my opinion if we could not splice within the same list.
youre one of the different teacher sir, please show us something that others don't share , like u did in this video
Cheers, thank you for the kind words!
thanks if you touch any topics ,please discuss deeply by showing cpprefferance , and this helps learning when u talk half an hour and show everything inside out.god bless u@@MikeShah
@4:16 When you say as long as we have iterator , this also mean we are having O(i) if i is the position of the list in the std::list object right? it wouldn't be O(1) if we calculate iterator part too.
Correct, if we have an iterator then we can insert in O(1)
@@MikeShah Thank you so much.
Amazing tutorials about STL, very handy!
Cheers!
keep going dont stop mate
More on the way 🙂
Helpful and informative, thanks for continuing the series. How about having light theme over dark for tutorials.
Cheers. Will consider that
Thanks much!
Cheers!
Great video
Cheers!
You're so cool, thanks again
Cheers!
@@MikeShahstill learning going thought it again. Thank you for making.. reusable code 😅
@@VoidloniXaarii cheers! Enjoy!
Hey mike I have a question -> First look at this code ->
int main()
{
std::list li = { 321, 432, 12, 34, 531 };
std::list::iterator it = li.begin();
for(it; it != li.end(); it++){
std::cout
Hmm, perhaps after the final node, the 'next' pointer points back to the head then -- that seems to be the behavior I'm getting here: godbolt.org/z/fYcv1Yjz7 This still is behavior that I would not tend to rely on :)
@@MikeShah Thank you mike. I guess i will rule out this behavior as some kind of optimization maybe to prevent accessing non-reserved memory.