Element at index in a std::set?
c++, set, std
Solution
It doesn't cause a crash, it just doesn't compile. `set` doesn't have access by index.
You can get the nth element like this:
std::set<int>::iterator it = my_set.begin();
std::advance(it, n);
int x = *it;
Assuming `my_set.size() > n`, of course. You should be aware that this operation takes time approximately proportional to `n`. In C++11 there's a nicer way of writing it:
int x = *std::next(my_set.begin(), n);
Again, you have to know that `n` is in bounds first.
Problem
I've stumbled upon this problem: I can't seem to select the item at the index' position in a normal `std::set`. Is this a bug in STD? Below a simple example: ``` #include <iostream> #include <set> int main() { std::set<int> my_set; my_set.insert(0x4A); my_set.insert(0x4F); my_set.insert(0x4B); my_set.insert(0x45); for (std::set<int>::iterator it=my_set.begin(); it!=my_set.end(); ++it) std::cout << ' ' << char(*it); // ups the ordering //int x = my_set[0]; // this causes a crash! } ``` Anything I can do to fix the issue?