由于concurrent_vector不使用连续的内存块,我只是想确信这是否是好的:使用concurrent_vector迭代器的算法:假设从迭代器中减去'begin()'会给出索引是否安全?
concurrency::concurrent_vector<Something> my_array;
//Populate 'm_array' somehow perhaps involving multiple threads
const auto iter = std::find_if (my_array.begin(), m_array.end(), SomeLambda);
const int index = iter - my_array.begin();
我的问题:是否有任何情况下,“索引”不会索引的元素我刚刚发现(通过concurrect_vector :: operator []方法)?我意识到另一个线程理论上可以修改元素 - 这不是我的问题。我想这应该工作,但因为我习惯于使用原始指针,我只想问(这样我就不会无意中添加一个微妙的错误来源)。
什么是'concurent_vector'? – 2013-05-01 11:15:35
http://msdn.microsoft.com/en-us/library/ee355343.aspx? – BoBTFish 2013-05-01 11:16:02
它有一个'difference_type',文档说它是一个随机访问迭代器,所以假设MS是理智的并遵循[该短语的标准含义](http://en.cppreference.com/w/cpp/concept/RandomAccessIterator),这是安全的。 – BoBTFish 2013-05-01 11:21:09