Erasing elements from a vector

Use the remove/erase idiom: std::vector<int>& vec = myNumbers; // use shorter name vec.erase(std::remove(vec.begin(), vec.end(), number_in), vec.end()); What happens is that remove compacts the elements that differ from the value to be removed (number_in) in the beginning of the vector and returns the iterator to the first element after that range. Then erase removes these elements … Read more

What is the difference between std::array and std::vector? When do you use one over other? [duplicate]

std::array is just a class version of the classic C array. That means its size is fixed at compile time and it will be allocated as a single chunk (e.g. taking space on the stack). The advantage it has is slightly better performance because there is no indirection between the object and the arrayed data. … Read more

Are vectors passed to functions by value or by reference in C++

In C++, things are passed by value unless you specify otherwise using the &-operator (note that this operator is also used as the ‘address-of’ operator, but in a different context). This is all well documented, but I’ll re-iterate anyway: void foo(vector<int> bar); // by value void foo(vector<int> &bar); // by reference (non-const, so modifiable inside … Read more

How to navigate through a vector using iterators? (C++)

You need to make use of the begin and end method of the vector class, which return the iterator referring to the first and the last element respectively. using namespace std; vector<string> myvector; // a vector of stings. // push some strings in the vector. myvector.push_back(“a”); myvector.push_back(“b”); myvector.push_back(“c”); myvector.push_back(“d”); vector<string>::iterator it; // declare an iterator … Read more