Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Něco navíc v zeleném?
A proč ne...

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub C, C++ [ŽP: neomezená] (kategorie Programování) moderuje Šéf Lopuchu.
Archiv

Články

Jak bezpečně ukončit vlákno z DllMain
FastAllocPool - urychlení častých alokací a dealokací
Akce a zpráva jako objekt
Tuply v C++
Efektivní alokátor malých objektů a tady druhý a třetí díl
Šablony: Být vládce kvalifikátorů
Vracíme z funkce objekty
Základy komunikace mezi procesy (ve Windows)
Multiple Interface a Instance Factory
Multithreading v C++ (ve Win32)
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: obhdfkz
[ 380 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
sekory Sekory The journey of thousand miles - starts with a single step. 4.9.2012 20:27  878
huh se dotkl toho, jake reseni se zmenou reference jsem mel na mysli. Reference je vlastne neco jako pointer, takze staci vytvorit union s pointrem. V kodu je jeste jedna pomerna zajimava featura a to, ze jmeno typu muze poslouzit i jako jmeno promenne. :)



#include <iostream>
using namespace std;

union test
{
	int* p;
	int& r;
	test(int& x):r(x){}
};

main()
{
	int a = 5;
	test test(a);
	int c = 3;
	test.p = &c;
	c += 3;
	cout << test.r << endl;

	return 0;
}

sekory Sekory The journey of thousand miles - starts with a single step. 2.9.2012 23:14  877
huh: Zajimave, ale treba ve visual studiu to nefunguje. Jde to i jinak aniz bys spolehal, ze se nejake promenne naalokuji za sebou...
huh huh 2.9.2012 22:38  876
Sekory [875]: no reference je v zasade ukazatel, takze pokud ti ji prekladac nezoptimalizuje a dostanes se k nemu, tak to neni takovy problem:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i=1;
    int j=2;
    int& r = i;
    int* a[1];
    cout << r << endl;
    int** pr= a + 1;
    *pr = &j;
    cout << r << endl;
    j = 4;
    cout << r << endl;

    system("PAUSE");
    return EXIT_SUCCESS;
}

sekory Sekory The journey of thousand miles - starts with a single step. 2.9.2012 22:10  875
Schvalne, jestli nekdo z vas vi, jak zmenit referenci. Standardne zmenit po inicializaci nejde, ale existuje takovy "hack" jak zmenit jde. :)
bredy 30.7.2012 10:44  874
Často to používám z toho důvodu, abych skryl implementrační detaily v hlavičkách. Například pokud třída potřebuje nějaké další třídy, které nejsou potřeba pro ovládání té třídy (jsou potřeba jen pro její konstrukci), pak používám interface + implementace + továrnu.

interface definuje funkce, kterým lze objekt ovládat, implementace dědí interface a obsahuje vše, co je potřeba k zajištění činnosti objektu a továrna se stará o to, aby se dal objekt instanciovat bez nutnosti mít naincludované všechny definice pro přeložení třídy.
sekory Sekory The journey of thousand miles - starts with a single step. 18.7.2012 21:58  873
huh: Přesně tak, abstraktní bez implementace. Trochu mi to příjde jako interface v Javě (Javu teda moc neznám...). Každopádně díky.
huh huh 18.7.2012 21:31  872
Sekory [871]: Myslíš čistě virtuální (abstraktní), tj. bez implementace? Tak snad leda, pokud by mělo smysl vytvářet i jiné potomky, byť zatím má jen jednoho. (Druhá možnost je overengineering :-) )
sekory Sekory The journey of thousand miles - starts with a single step. 18.7.2012 19:46  871
K čemu se používá base class, která má všechny metody virtuální, pokud z dění jen jedna další třída, která ty metody implementuje? Nevidím k tomu důvod, ale narazil jsem na to.
sekory Sekory The journey of thousand miles - starts with a single step. 25.6.2012 14:58  870
Tak jsem se rozhodl, že budu používat Eclipse. Už jsem v tom něco malého dělal (v Javě teda) a případně to má člověk i pod Windowsi.
sekory Sekory The journey of thousand miles - starts with a single step. 24.6.2012 22:19  869
C++ IDE pod LinuxemJaké IDE na C++ byste doporučili pod Linux? Existuje toho celkem dost, což rozhodování moc neulehčí. Psát to v nějakém Editoru a pak to kompilovat z příkazové řádky se mi zdá poněkud nevyhovující (ačkoli určitě to má svoje výhody).
bredy 29.3.2012 12:14  867
huhJá jsem taky mimo. Mě jen děsíc výčet featur, které tam mají. Pro ně je to samozřejmě jednoduší, protože spousta šifer má společný základ. Ale i beztak z toho vzniká moloch a nafukuje to kód.

Nicméně se na to podívám. O Crypto++ jsem už taky zavadil.
huh huh 29.3.2012 02:49  866
Bredy [858]: Už je asi pozdě, nicméně jsem narazil na LibTomCrypt, což by to mohlo umět. Jinak teda taky třeba Crypto++. Přiznávám se, že téhle oblasti vůbec nerozumím, takže pokud jsem mimo, tak se omlouvám.
bredy 6.3.2012 12:01  865
No na tomhle řešení jsou trošku problém dva posuny. On ten posun nemusí být na CPU implementovan zrovna pomocí multiplexu, ale n x posouvání shiftregistru (trvající n taktů). Tak jsem se snažil tam mít minimum posuvů, víceméně jen na výpočet masky. Ale je fakt, že tohle je jedno z řešení. Nicméně, lze to udelat s jednim shiftem, a exustujou dvě varianty.
king King Born to be king - ... 6.3.2012 11:54  863
Prox by clovek musel zapomenout na pouziti OR a AND pro nastaveni/vymazani?

reseni v pythonu:

def set_bit(n, pos, val):
return (0b11111111 ^ 1 << pos) & n | val << pos)
bredy 6.3.2012 10:54  862
Kvíz pro začátečníkyNapište funkci

int setBit(int n, int bit, int val)


co nejjednodušší bez použití IFu ani jiného rozhodování.
n = vstupní číslo
bit = pozice bitu
val = hodnota bitu
vrací výsledné číslo.

Dá se v pohodě, ale člověk musí zapomenout na klasický postup použití OR pro nastavení a AND pro vymazání. Nicméně superskalární procesor vám poděkuje.

[ 380 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt