C++ unique_ptr

23 отговора 0 прегледа
#1

C++ unique_ptr

Гледам хубаво си говорите за/със курви, Есте Лаудерчета, ебане и др., ама може ли да разваля купона с едно въпросче? :)

Имам един std::set с unique_ptr-та вътре (С++11) (вече го нямам де, но въпросът е принципен). Та исках да преместя елемент от един сет в друг, ама не намирам atomic начин, щото докато е в единия сет е immutable и т.н...

Отговор
в отговор на Cин Mapмoт #2

Re: C++ unique_ptr

Не става ли с std::move()?

Отговор
в отговор на pesho.konia #3

Re: C++ unique_ptr

Не, щото е kеy и по тая причина immutable.

Отговор
в отговор на Cин Mapмoт #4

Re: C++ unique_ptr

Не разбирам C++ много много - само основите. Видях следния пример он-лайн. Защо тук работи, а при теб не?

#include <iostream>
#include <memory>

struct Foo {
Foo() { std::cout << "Foo::Foo\n"; }
~Foo() { std::cout << "Foo::~Foo\n"; }
void bar() { std::cout << "Foo::bar\n"; }
};

void f(const Foo &foo)
{
std::cout << "f(const Foo&)\n";
}

int main()
{
std::unique_ptr<Foo> p1(new Foo); // p1 owns Foo
if (p1) p1->bar();

{
std::unique_ptr<Foo> p2(std::move(p1)); // now p2 owns Foo
f(*p2);

p1 = std::move(p2); // ownership returns to p1
std::cout << "destroying p2...\n";
}

if (p1) p1->bar();

// Foo instance is destroyed when p1 goes out of scope
}

Отговор
в отговор на pesho.konia #5

Re: C++ unique_ptr

*зима си пуканките*

Отговор
в отговор на _gruhal_ #6

Re: C++ unique_ptr

е то философски сет от уникални неща е безсмислено, ама все пак :)

Отговор
в отговор на Cин Mapмoт #7

Re: C++ unique_ptr

Не е безмислено, IMHO.

Mного по-безмислено е "аз не знам ц++, нито ти разбирам въпроса, ма ей сега щи обясня"

Инак на теб ти трябва атомик трансфер от един сет в друг като пропърти на сет-а, а не се сещам да има такова. (може и да бъркам)

Отговор
в отговор на _gruhal_ #8

Re: C++ unique_ptr

Еми не намирам и аз, то не можеш и да го извадиш...

Иначе да, чакам есте лаудерките да се включат :Р

Отговор
в отговор на _gruhal_ #9

Re: C++ unique_ptr

хехе. Аз харесвам С++, но не го използвам в работа и се радвам като имам възможност да се образовам. Разбирам какво значи атомик трансфер. Знам какво значи имютъбал. Съдържанието на обекта не може да бъде променяно. Не разбирам защо не може да се трансферира пойнтъра от единия сет в друг пойнтър в другия сет. Съдържанието не се променя. Пак ще си е кий.

Отговор
в отговор на _gruhal_ #10

Re: C++ unique_ptr

иначе философски - щото не можеш да добавиш втори път нещо, не можеш и да търсиш по нещо, щото е уникално :)

Отговор
в отговор на Cин Mapмoт #11

Re: C++ unique_ptr

Няма да търсиш - ще итерираш ;)

Отговор
в отговор на pesho.konia #12

Re: C++ unique_ptr

От друга страна имютъбал има различни значния. Какво става ако направиш move? run-time error?

Отговор
в отговор на pesho.konia #13

Re: C++ unique_ptr

Ако веднага изтриеш излишния пойнтър след като направиш move, вярвам че ще работи. Ако някой друг може да оперира върху този сет, трябва да се лок-не първо. Но дали е редно да се стига до там на първо време...това е друг въпрос.

Отговор
в отговор на _gruhal_ #14

Re: C++ unique_ptr

Аз подхождам към въпроса логически, което често в по-добре от някой експерт в синтаксиса, който се загубва в него. Тъй че ако имаш проблеми, питай бати си пешо коня, на който си искаш език.


Отговор
в отговор на Cин Mapмoт #15

Re: C++ unique_ptr

Това няма ли да свърши работа:
template< class T, class Deleter >
void swap( unique_ptr<T,Deleter> &lhs, unique_ptr<T,Deleter> &rhs );

Отговор
в отговор на Om_ #16

Re: C++ unique_ptr

С екстернал функция няма как да стане, кой ще рекийне сета?

Отговор
в отговор на _gruhal_ #17

Re: C++ unique_ptr

Да суапне директно двата сета, не да мести пойнтери.

Отговор
в отговор на synergie_bg #18

Re: C++ unique_ptr

Да де, ма той е с uniq поинтери вътре и нема как.

Отговор
в отговор на _gruhal_ #19

Re: C++ unique_ptr

Имах предвид да суапне сет1 със сет2. Какво има в сетовете няма значение. Сега прочетох обаче че той иска конкретни елементи ми не всички.

п.с. Не че суапа е атомик, но като цяло и неговото задание е доста неясно каква цел точно преследва.

Редактирано от synergie_bg на

Отговор
в отговор на synergie_bg #20

Re: C++ unique_ptr

Да, и тъй като тия елементи са уник, той не може да направи сет Б да има всички без 1 плюс новия, че да мине това.

Отговор