- Drága bluetooth tagek olcsóbb alternatívái (MiLi MiTag, LiTag, OTAG, stb.)
- Külföldi prepaid SIM-ek itthon
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Milyen okostelefont vegyek?
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Mobilinternet EU-n kívül, eSIM adatcsomagok használata
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Bemutatkozott a Poco X7 és X7 Pro
- Yettel topik
-
Mobilarena

Új hozzászólás Aktív témák
-
joysefke
veterán
Úgy látom a topkiban a sprint demók és határidők nem e-hét csütörtök péntekre estek...
-
joysefke
veterán
válasz
dabadab
#11263
üzenetére
Közben megnéztem mi a
cin >> akármi;
getline(str);összeakadás oka, ha egymás után (ebben a sorrendben) olvasnak a bemenetről:
acinfigyelmen kívül hagyja az újsor karaktert és nem veszi el a bemenetről. Ha a getline(str) ezután olvas, akkor nem a következő sorból olvas, hanem az egy szem újsor karaktert fogyasztja el és leáll.J.
-
joysefke
veterán
1000 éve programoztam C++-ban (meg úgy egyébként) és most a C++ még nagyobb ocsmányságnak tűnik mint anno

Nyilván az én sutaságom a fő oka, de akkor is, nem egy barátságos valami... -
joysefke
veterán
válasz
dabadab
#11258
üzenetére
Ok, az alábbi kód tesztelve és, működik.
Két hiba volt:
(1)
első (ocsmány) hiba:
az első sort beolvasócin >> aN >> reads;
összeakad a második (és utána következő aN) sort beolvasó:getline(cin, line);
istringstream s(line);kóddal. A
getline(cin, string line)valamiért az első, acin >> aN >> reads
által olvasott sort is olvassa, pedig csak a másodiktól kellene olvasnia. Elimináltam ez egész kódból a cin-t, és mindent soronként olvasok és parsolok, így működik.(2)
A vector<vector<int>> struktúrát (nyilván) rosszul inicializáltam. Most deklaráltam két változót:vector<vector<int>> a;
vector<int> b;A
b-t inicializálom, feltöltöm és belea.push_back(b)aza-ba.Tudom, hogy ez favágó programozás, mert biztos vagyok benne, hogy az a.push_back(b) az egy felesleges (kikerülhető) másolás, illetve a
while (s >> temp) {
b.push_back(temp);
}kódrészlet sem optimális, mivel nem használom ki, hogy ismerem a b-vektor hosszát, ezért felesleges resize műveleteket fog csinálni a kód runtime-ban...
szerk: beleraktam egyb.reserve(temp)-et, ez feltételezem kiküszöböli a runtime resize-olást...int main() {
int aN = -1;
int reads = -1;
string line;
int temp;
int r, c;
getline(cin, line);
istringstream s(line);
s >> aN;
s >> reads;
vector<vector<int>> a;
vector<int> b;
for (int i = 0; i != aN; ++i) {
getline(cin, line);
istringstream s(line);
s >> temp;
b.clear();
while (s >> temp) {
b.push_back(temp);
}
a.push_back(b);
}
for (int i = 0; i != reads; ++i) {
cin >> r >> c;
cout << a[r][c] << endl;
}
return 0;
} -
joysefke
veterán
ez mind szép és jó, de fenti kódban hol a hiba?
Most arra tippelek, hogy az
a.resize(aN);-nel így önmagában nem tud mit kezdeni, mert
em tudja mivel kellene feltölteni. Szóval most megcsinálom, hogy
a, belepush_back()-elek egy üresvector<int>-et és azt töltögetem egyenként vagy
b, feltöltök egy teljesvector<int>-et és aztpush_back-elem egészben avector<vector<int>>-be -
joysefke
veterán
Ezer éve nem foglalkoztam C++-szal, most szeretném felhozni magam, de a legegyszerűbb dolgok sem működnek. A kétezres évek elején ragadtam..
Meg tudná valaki légyszi mondani, hogy a konkrét kódban mi a hiba?
vector<vector<int>> struktúrát szeretnék létrehozni, és soronként inicializálni.
-a bemenet első sora megadja, hogy a vector<vector<int>> struktúra hány sorból álljon, ezt az aN változóban tárolom.
-a bemenet következő soraaian első eleme egy-egy integer, ami megmondja, hogy az adott sorban tárolt vector<int> struktúra hány elemet fog majd tartalmazni. A további elemek pedig a sorban tárolt vector<int>-nek az egyes egész számai.int main() {
int aN = -1;
cin >> aN ; //vektor sorainak száma
string line; // soronként olvasom és parsolom a bemenetet
int temp;
vector<vector<int>> a;
a.resize(aN); // foglalok aN darab sort. Nem tudom mit használ default értékként feltöltésre
for (int i = 0; i != aN; ++i) {
getline(cin, line); //adatok beolvasása soronként
istringstream s(line);
s >> temp; //a sor első eleme megmondja, hány elemű lesz a sorban tárolt vector<int>
a[i].reserve(temp);
while (s >> temp) { //parsoljuk a beolvasott sort, minden integert beleírunk a sor végére
a[i].push_back(temp);
}
}
return 0;
}
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Drága bluetooth tagek olcsóbb alternatívái (MiLi MiTag, LiTag, OTAG, stb.)
- Epic Store Ünnepi Ajándékozás - 7. nap: The Callisto Protocol
- Kecskemét és környéke adok-veszek-beszélgetek
- Okos Otthon / Smart Home
- PlayStation 5
- Path of Exile 2
- Gitáros topic
- Arc Raiders
- További aktív témák...
- LG 32GP850-B 32'' Sík QHD 165 Hz 16:9 G-Sync/FreeSync NanoIPS Gamer Monitor - Karácsonyi akcióban!
- RYZEN 7 5800X + hűtött VRM-es A520 alaplap + 32GB hűtőbordás DDR4 kit! GAR/SZÁMLA (a Te nevedre)!
- Noblechairs Epic - Valódi bőr
- iPhone 15 PLUS 128GB kék sérült kijelző, KÁRTYAFÜGGETLEN! Akkumlátor 90%! Fulldoboz!
- GAMER PC - i7-7700, 16GB DDR4, GTX 1650
- Azonnali készpénzes INTEL CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- Számlás!Windows 10 Pro 11 Pro,Windows 10 Home 11 Home, Office 2016,2019,2021 ,Vírusirtok,Mac
- BESZÁMÍTÁS! LENOVO ThinkPad P15 Gen1 - i7 10850H 64GB DDR4 1TB SSD Quadro T2000 WIN11
- Apple iPhone 12 Pro Max 128GB, Kártyafüggetlen, 1 Év Garanciával
- Egyedi névre szóló karácsonyfadísz rendelhető! 3D Nyomtatott!
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest




