tags:

views:

530

answers:

4

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.

+9  A: 
if (0 <= i  &&  i < v.size()) {
  // OK
  std::cout << v[i]; // Example
} else {
  // Wrong
}
Alexey Malistov
I don't understand how the size of a vector can be used to find out if an element in the vector exists? Given a vector of 500 elements, how does the `size` method help me determine if element at position 10 exists?
Thomas Matthews
I think the question means "how to find if there is an element (or any value) at the position indexed by i"
anon
@Thomas, size() returns the number of elements actually in the vector. so v[n] where 0 <= n < size() must contain an element.
Graphics Noob
+3  A: 

Use v.size().

Parappa
I know how, but I guess that your answer won't help the questioner. Use how?
Johann Gerell
A: 

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.

Thomas Matthews
This may or may not be quicker. A linear search may well be much quicker than sorting if the search is only performed once per sort.
anon
+5  A: 

An element is guaranteed to exist at every position i where i >= 0 and i < v.size() as vectors are contiguous sequences of elements and "holes" are not possible.

Charles Bailey