2013-08-29 11 views
7

bir kova yineleyici (local_iterator) kullanılarak std::unordered_set bir öğe kaldırabilir diyor? silme() yalnızca iterator s küresel kabul etmez, eşdeğer işlevsellik local_iterator için olduğundanBir std :: unordered_set öğesinden kepçe yineleyicileriyle öğeleri kaldırmak mümkün mü? Söz gibi

  • : İki olası çözümler görebilir?
  • local_iterator için eşdeğer global iterator elde etmek mümkün mü?

Bu mümkün değilse, lütfen neden olmadığını açıklayın. Bu destekler arayüzde hiçbir işlevi olmadığı

+3

hem 'Onun 've' ++ Onun' aynı işlev çağrısında. –

+0

Güncelleme, yine de aynı hatayla sonuçlanıyor. –

+2

['std :: remove_if'] 'da okumalısınız (http://en.cppreference.com/w/cpp/algorithm/remove). Aslında elemanları kaldırmaz. –

cevap

5

açık cevabı, hayırdır. Bir local_iterator çok daha az bilgi içerir bariz bir nedenle için, bir local_iterator gelen bir iterator almak için hiçbir yol yoktur. ( çoğu uygulama için, uygulamak için oldukça basit olacağından şüpheleniyorum, standart gerekliydi. Öte yandan, bunun için neden kullanılabilir bir düşünemiyorum, bu yüzden standart olabilir bunu gerektirir vermedi.) Sen kullanamazsınız

+0

kullanarak 'için' local_iterator' dönüştürmek oldu. (1) Yerel_itleyiciyi bir yineleyiciye dönüştürmek için başka hangi kova numarasına ihtiyaç duyulur? (2) Bir kapsayıcı üzerinde yineleme yaparken yerel_latıcıyı silmek için birçok kullanım durumu vardır - tıpkı tam kapsayıcı üzerinde yineleme yaparken yineleyicileri silmek için kullanım durumları gibi. Local_iterator için silinmeden, std :: unordered_set'in const_local_iterator ve local_iterator arasındaki herhangi bir fark var mı? – chs