I wanted to check whether an element exist at a particular vector location, say i, before accessing it like v[i]. Could you let me know how can I do that?
Thank you.
if (0 <= i && i < v.size()) { // OK std::cout << v[i]; // Example } else { // Wrong } size method help me determine if element at position 10 exists?Use v.size().
If you want to know if an element exists in a vector, the quickest method is to sort the array then use a search method such as binary search.
If this action is performed many times, perhaps changing the data structure will yield better performance. An std::map is good for this, and if your compiler has one, use a hash table or map.
Otherwise the only way to determine if a value exists in an vector without accessing the vector is to use a second data structure to remember the value and position.
I understand you have a std::vector preallocated at a specific dimension, let's say n, and you want to see if the element at index i (i < n) was initialized or is just allocated.
Like @Thomas Matthews said, you can use a second data structure, a simple bool[n], in which, at index k, you store true if the element at index k in your vector exists and false otherwise.
0 1 2 3 4 5 v = [ * * * * ] 0 1 2 3 4 5 exists = [ true, false, true, false, true, true ]
operator[]with unchecked arguments ("like v[i]") isn't.