- 5.1, 7.1 és gamer fejhallgatók
- Először égett le egy újságnál a GeForce RTX 5090
- TCL LCD és LED TV-k
- Gaming notebook topik
- SSD kibeszélő
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Melyik tápegységet vegyem?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- DDR4 vs DDR5 vs DDR6 – melyik kell neked?
Új hozzászólás Aktív témák
-
EQMontoya
veterán
válasz
HussarF #2759 üzenetére
Jól értem, hogy Te most a file közepébe szeretnél írni?
Ez nem fog menni sehogy, ne erőlködj.
Ha odaseek-elsz, akkor onnantól írsz a fileba, bármi is van utána.Az ilyen problémákat úgy szokták kezelni, hogy az összes adat, amit menteni akarsz, memóriában van, és mindig kiírod a teljes filet. A beleseekelés írt fileba csak nagyon speciális körülmények között értelmes dolog.
-
válasz
HussarF #2750 üzenetére
"De amit nem értek, hogy valahol mégis csak beolvassa így is a string-be"
Nem a stringbe, hanem egy random tárterületre, ugyanis a printf egy char *-ra számít, ehelyett megkapja a string értékét (nem magát a C-stílusú stringet, ami jelen esetben egyetlen nullla karakterből állna, mert üres, hanem kompletten a belső változók értékeit) és ezt értelmezi pointerként (printf szintén). Szóval valami tök random helyre írsz a memóriában és onnan is olvasol.
-
EQMontoya
veterán
válasz
HussarF #2748 üzenetére
Jujj, azért ez a pattintott C korszak.
Fscanf: char*-ba tudsz vele olvasni.
Ha stringbe szeretnél olvasni c++ módon, akkor valahogy így próbálkozz:int main () {
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
cout << line << '\n';
}
myfile.close();
}else cout << "Unable to open file";
return 0;
} -
válasz
HussarF #2622 üzenetére
"most már csak kb. másfélszer lassabb a függvényekbe szedett kód a spagettinél."
Akkor inline-old a függvényeket. Ahhoz az kell, hogy egy fordítási egységben legyenek, vagyis praktikusan a kis függvények vagy egy c++-ban legyenek azzal, ami meghívja őket (ez esetben inline-ként kell őket deklarálni), vagy benne legyen a függvény törzse is a header file-ban (ilyenkor meg automatikusan inline-olódik).
-
proof88
addikt
válasz
HussarF #2620 üzenetére
ebben az esetben, ne pointerként add át őket, hanem simán csak értékként (ezt az E1-re és az sz_E-re értem). Nem vesztesz sebességet. Pointereket akkor használj, ha tényleg tömbről van szó, és dinamikusan lefoglalt memóriaterületre mutat a mutatód. Ha esetleg kifelé is változtatni akarsz a beadott paramétereken, akkor inkább referenciaként add át, ne mutatóként. Érdemes ezt használni, ha már C++. C-ben nincs referencia.
-
proof88
addikt
válasz
HussarF #2617 üzenetére
nem, ilyenkor a vector-ok másolódnak, azaz új vector objektumok keletkeznek, az eredetik tartalmával, és a függvény a másolatokon fog dolgozni, nem az eredetiken. A vektorokat add át referenciaként, pl:
vector<double>& E_tarolo
vagy pl.:
vector<vector<double>>& hkmígy az eredeti, függvénynek megadott vektorokkal fog dolgozni a függvény, mert csak referenciát adsz át neki.
Ezzel máris megspórolsz egy csomó dinamikus memóriafoglalást, melyek eddig mindig megtörténtek bármelyik vector-os függvényed hívásakor (a komplett vektor lemásolása végett).Amúgy Debug vagy Release módban fordítasz? Utóbbiban gyorsabb lesz a futás, persze fejleszteni Debug-ban ajánlott, a jobb hibakeresés végett.
Igazából nem tudom, milyen célja van ezeknek a vektoroknak, ezek csak bemeneti paraméterek? Mert ha igen, és a függvény nem is módosít rajtuk, csak olvassa őket, akkor még a const-ot is odaírhatod eléjük, pl.:
void PhotoEffect(double *E1, int *sz_E, const vector<double>& E_tarolo)
Illetve ami még nem világos, hogy pl ennél a függvénynél az E1 ill. sz_E paraméterek valóban tömbökre mutatnak?
-
válasz
HussarF #2617 üzenetére
"Meg a vector-okat, de azok is pointerként működnek, mint a tömbök, nem? vagy legalábbis nem hiszem, hogy az okozná a problémát"
Pedig de. Az std:vector<> az ugy mukodik, hogy amikor lemasolod, akkor a komplett adatstrukturat lemasolja.
(A QT containere pl. nem igy mukodnek, azok copy-on-write-ot csinalnak, de ez most csak mellekszal.)vagyis neked a kovetkezo kell pl:
void PhotoEffect(double *E1, int *sz_E, const vector<double> &E_tarolo)
-
proof88
addikt
-
proof88
addikt
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Vállalom Xianomi Okos kamerák, szoftveres javíttását
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Keychrone Q1 V2 billentyűzet / Számla / Garancia /
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB DDR5 RAM RX 9070 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: FOTC
Város: Budapest