Suppose I have a std::vector<foo> now I understand that insertion at the end of a vector is amortized constant. Which means it could either be O(1) or O(n) (since it acquire a new memory block , copies the old content into the new memory block). My question is when the items are copied to a newer memory block (supposedly larger) is the copy constructor of the object called again ? (The first time the copy constructor gets called is with a push_back) , in my case will the copy constructor of foo be called again upon resize of a vector ? I know with a std::deque the copy constructor wont be called since it stores the addresses of the objects on a heap and maintains them in a vector type data structure. will the behavior be same in C++98 and C++11
Will copy constructor of an object be called upon resize of a vector
2.6k Views Asked by MistyD At
1
There are 1 best solutions below
Related Questions in C++
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Why can't I use templates members in its specialization?
- How to fix "Access violation executing location" when using GLFW and GLAD
- Dynamic array of structures in C++/ cannot fill a dynamic array of doubles in structure from dynamic array of structures
- How do I apply the interface concept with the base-class in design?
- File refuses to compile std::erase() even if using -std=g++23
- How can I do a successful map when the number of elements to be mapped is not consistent in Thrust C++
- Can std::bit_cast be applied to an empty object?
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- How i can move element of dynamic vector in argument of function push_back for dynamic vector
- Brick Breaker Ball Bounce
- Thread-safe lock-free min where both operands can change c++
- Watchdog Timer Reset on ESP32 using Webservers
- How to solve compiler error: no matching function for call to 'dmhFS::dmhFS()' in my case?
- Conda CMAKE CXX Compiler error while compiling Pytorch
Related Questions in VECTOR
- Dynamic Nested Multi-Dimensional Arrays in Rust
- WorldToScreen function
- Unable to derive zerocopy::AsBytes on Vec<T> for struct T
- How can I add an element via emplace(pos, value) if I have a two-dimensional vector?
- Create Symbolic Function from Double Vector MATLAB
- Delete records in Datastax vector database
- Which is the most idiomatic way to parse an i32 from ascii in Rust
- Exponentiation of a vector
- How to create a vector of a specific class in c++ that includes thread objects in it?
- How can be the `$ operator is invalid for atomic vectors` error solved?
- R method for comparing NAs between two vectors
- Multiple child processes accessing the same vector
- Issue with intensities for Color Gradient in Vector Field with ggplot
- Multithreading vector multiplication
- Can spatial features be used as an input for a machine learning model?
Related Questions in DEQUE
- storing instances in an array based python deque
- Bug when sorting std::deque
- How to fix TypeError: 'int' object is not subscriptable error in deques, python
- Can iterator of `std::deque` go before its beginning
- Python: Deque Unable to load specific number of rows from bottom of csv while including the 1st row header column names
- Storing Deque Data fro class level access returns empty
- Why do mutable borrow errors disappear when refining the type of a function pointer variable
- Maximum subarray sum with at most K elements
- Two threads operate a std::deque, does below code have race condition?
- How to find the max element in a deque in java in O(1) amortized time?
- I am getting this error "Error when enabling iframe communication" when try to run accessibility script
- How to allocate an array whose elements are 'deque', through pointer in C?
- Assertion fails for collections.deque
- How to process the script just once
- How to add pointer semantics into C++ STL?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
For the most part, yes, copy constructors will be called.
As of C++11 std::vector will try to move objects when reallocating. If your object has a move constructor that will be called instead of the copy constructor.
Thanks to Piotr I now know that
std::vectorusesstd::move_if_noexceptto determine if the move constructor can be called without throwing an exception. See http://en.cppreference.com/w/cpp/utility/move_if_noexcept for more information.