Míchanice otázek – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Míchanice otázek – C / C++ – Fórum – Programujte.comMíchanice otázek – C / C++ – Fórum – Programujte.com

 

General0
Návštěvník
20. 6. 2011   #1
-
0
-

Mám tu několik otázek a myslim že by nebylo vhodný, aby sem pro každý zakládal nový téma.

1.) Takže první věc. Nejsem si jistej, jestli chápu dobře využití ukazatelů. Když za běhu vytvářim proměnnou:

int *i = new int;

Tak se z ní stává ukazatel na paměť, přímo samotná "proměnná" by to bylo jen tehdy, kdyby byla pojmenovaná - vytvořená už při překladu programu?

Jaký využití má pak ukazatel na proměnnou, která se vytvořila při překladu? Vždyť se to používá stejně.. Příklad:
int i = 100;

int *pi = & i; //rozdíl akorát že při volání před ukazatelem je "*"?!

Chápu to jak sem teď napsal, ale nechápu k čemu mi je ukazatel. Jen vim rozdíly proměnnejch, který se vytvářej za běhu a těch který při kompilaci.

2.) Jak mam vytvořit strukturu, když nevim ani přibližně jakou budu potřebovat kapacitu? Protože se mi teď naskytnul případ (asi řeknete že špatnej návrh aplikace :-D), kdy nevim jestli tam bude 1 nebo 1 mega záznamů. Když sem zadal velký číslo, tak to sežralo 50 MB paměti a vzpomalilo program, tim sem se přesvědčil, že to alokuje hned.

3.) Jen taková zajímavost. Nevíte někdo jestli by šlo přistupovat přes C/C++ k nastavení otáček nějakýho chladiče (větráku)v PC? Chtěl bys zkusit jednu blbinu..

Nahlásit jako SPAM
IP: 89.103.14.–
yaqwsx+9
Posthunter
20. 6. 2011   #2
-
0
-

1) Využití to má např. při předávání velkých struktur funkci, aby se celá struktura nemusela kopírovat (i když v C++ jsou na toto vhodnější reference - jsou pohodlnější), také např. až začneš s třídami, tak někdy potřebuje nějaká třída ukazatel na nějakou jinou třídu či proměnnou.
2)Co kjonkrétně myslíš strukturou? Nejde mi do hlavy spojení "jak velkou strukturu". Pokud jde o pole, tak řešením je pole dynamicky alokovat za běhu programu podle potřeby, popř. použít třídu vector z STl, která alokaci řeší za tebe.
3)Určitě šlo, ale jedná se o moc HW vázanou záležitost - nutno nastuduvoat u výrobce základní desky (jestli to deska vůbec podporuje)

Nahlásit jako SPAM
IP: 85.160.127.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
General0
Návštěvník
20. 6. 2011   #3
-
0
-

Strukturou myslim tohle:

typedef struct S {

string nazev;
string hodnota;
};
S struktura[200]; //velikost 200

I když by to šlo vyřešit spoustou polí (atd..), např.
vector<string> nazvy;

vector<string> hodnoty;

Jinak mě docela překvapila rychlost struktur - procházení, naplňovaní. Když tam jsou samý čísla, tak je to rychlý, ale třeba 100 000 krátkejch řětězců trvá 0.1s, což si myslim, že kdybych takhle přes ně udělal vlastní DB, tak by to bylo hodně pomalý.

Jo a ještě mam další otázku, na podobný téma který tu nedávno bylo, ale nic sem se z něj nedozvěděl. Chci dělat formulářový aplikace (pod Win), mam se učit WinAPI, nebo existuje na to nějakej framework?

Nahlásit jako SPAM
IP: 89.103.14.–
m->29+6
Super člen
20. 6. 2011   #4
-
0
-

A prečo nepoužiješ jedno pole?

vector<S> nazvy;
Prípadne ak tá štruktúra využíva naozaj len názov a hodnotu a potreboval by si pristupovať k hodnotám pomocou názvu tak:
map<string,string> hodnoty;
Potom to využívaš takto:
hodnoty[nazov] = hodnota;


Neviem čo myslíš rýchlosťou prechádzania štruktúr. Ak vektor tak ten je myslím implementovaný ako pole takže čas prístupu k položke je konštantný.

No a pokiaľ chceš vyvíjať aplikácie pod Windows tak na to je asi najlepší jazyk C#. WinAPI už je dosť stará záležitosť a pracuje sa s tým dosť krkolomne (len môj názor). Tým ale nechcem povedať, že sa to nepoužíva. Ja môžem pre C++ doporučiť Framework Qt, ktorý je dokonca multiplatformový.

Nahlásit jako SPAM
IP: 83.240.51.–
General0
Návštěvník
20. 6. 2011   #5
-
0
-

Řekněme, že budu potřebovat zhruba takovou nějakou strukturu:

struct S {

int id;
string nazev;
string hodnota;
vector<string> seznam;
};

Nahlásit jako SPAM
IP: 89.103.14.–
m->29+6
Super člen
21. 6. 2011   #6
-
0
-

V tom prípade ti vektor stačí. Vytvoríš to takto:

vector<S> nazvy;

S s;
s.id = 29;
s.nazev = "m->";
s.hodnota = "Pepek Námorník";
s.seznam.push_back("Hmmm");
s.seznam.push_back("Hmmm2");
s.seznam.push_back("Hmmm...");
nazvy.push_back(s); // vloženie prvku
S s2 = nazvy[0]; // výber prvku
Pričom vektora sa prispôsobuje a automaticky alokuje pamäť podľa potreby.

Nahlásit jako SPAM
IP: 83.240.51.–
General0
Návštěvník
21. 6. 2011   #7
-
0
-

Díky za všechny odpovědi. Jinak tohle řešení by mě nenapadlo.

Nahlásit jako SPAM
IP: 89.103.14.–
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, 8 hostů

Podobná vlákna

Několik otázek.. — založil General

Flash pár otázek — založil milanmichal

Pár otázek na pohovor... — založil xJakubS

Pár otázek ohledně testování — založil Facedown

Moderátoři diskuze

 

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