由於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