Dá sa priradiť iterator do pointra – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Dá sa priradiť iterator do pointra – C / C++ – Fórum – Programujte.comDá sa priradiť iterator do pointra – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
lukas.balaz0
Super člen
29. 12. 2014   #1
-
0
-

Čaute

mám set štruktúr, pričom každá inštancia štruktúry v sete si musí pamätať pointer na inú inštanciu (tiež v tom sete). Musím tam mať parameter typu set<struktura>::iterator ?? Je to docela nevýhoda, pretože tú štruktúru možno budem chceť používať aj vonku toho setu. Môžem tam dať normálne parameter typu struktura* a potom do toho priradiť to, čo vráti volanie set::find() ?? Aký bude rozdiel mať tam pointer alebo iterator ?? Čo by som s iteratorom robiť mohol ale s pointrom nie ?? (to sa pýtam preto, pretože stále nechápem, aký je vlastne rozdiel medzi iteratorom a pointrom)

Diki

Nahlásit jako SPAM
IP: 80.242.41.–
Reklama
Reklama
KIIV+42
God of flame
29. 12. 2014   #2
-
0
-
Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lukas.balaz0
Super člen
29. 12. 2014   #3
-
0
-

#2 KIIV
Keď chcem iterator uložiť ako pointer, vyhadzuje mi túto chybu:

no known conversion for argument 1 from 'std::set<struktura, set_comparator>::iterator {aka std::_Rb_tree_const_iterator<struktura>}' to 'struktura*'

Bude fungovať, ak to len castnem pomocou (struktura*) ??

EDIT: nie, aj na cast vyhadzuje error .. ako to teda má byť ???

Nahlásit jako SPAM
IP: 80.242.41.–
voty+1
Návštěvník
29. 12. 2014   #4
-
0
-

#3 lukas.balaz
Přiřadit iterator do pointeru nelze (přímo). Do pointeru lze přiřadit adresu toho, na co iterator ukazuje. Což by v tomto případě bylo

ukazatel = &*iterator;
Nahlásit jako SPAM
IP: 88.100.230.–
Jednu rozbil a tu druhou ztratil.
lukas.balaz0
Super člen
29. 12. 2014   #5
-
0
-

#4 voty
ok, ale stále mi to vyhadzuje nejaké errory, nakoniec som sa to rozhodol celé nerobiť a použiť tam len iterator aj v štruktúre.
takto mám štruktúry:
 

struct A
{
	vector<B>abc;
}
struct B
{
	set<A>::iterator cba;
        B(set<A>::iterator nCba):cba(nCba){}
}
int main()
{
        set<A>S;
        //nejake operacie, nakoniec mam v 2premenne
        //set<A>::iterator it1,it2
        it1->abc.push_back(B(it2)); //ERROR
}

Vyhadzuje to nejaký hnusný error:
passing ...(nieco) ... as 'this' argument of ... (nieco strasne dlhe, predpokladam ze to znamena funkcia push_back) ... discards qualifiers

Nahlásit jako SPAM
IP: 80.242.41.–
KIIV+42
God of flame
29. 12. 2014   #6
-
0
-

#3 lukas.balaz
sorry, nepochopil sem, ze chces iterator cpat do pointeru.. pak musis proste udelat dereferenci iteratoru a vzit tu adresu (jak to tu napsal voty)

Ta zasadnejsi chyba je v tom, ze nemuzes menit polozky uvnitr setu jelikoz je to zaroven i klic (musel bys mit jedine mutable u vectoru, ale vubec netusim, podle ceho se ti to v tomhle pripade vubec porovnava).

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 72 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý