Ez a valószínűleg c++ parancsnak mi a szerepe?
std::vector<KeyPoint> keypoints_1, keypoints_2;
detector.detect( img_1, keypoints_1 );
detector.detect( img_2, keypoints_2 );
Sajnos még sosem programoztam c++-ban, csak sima c-ben és pascalban.
Mire való a dupla kettőspont? Egy vektort hoz létre? A vektor olyasmi, mint egy mátrix?
detector.detect Ilyen c-ben csak akkor van, ha a detector egy valamilyen struktúra lenne...de nem az.
Aki csak el akar küldeni a google-re, az inkább ne válaszoljon. Lehet, hogy nyilvánvaló dolgok, azok számára akik már tudják, de én nem.





std::vector<KeyPoint> keypoints_1, keypoints_2;
Ezzel létrehozol kettő vektort(keypoints_1, keypoints_2). Az std::vector azt jelenti,hogy a vektor az std névtérhez tartozik. Ha ez nem lenne,akkor a fordító nem tudná,hogy mi az a vector. A vector-t úgy képzeld el mint egy tömböt. <KeyPoint> úgynevezett sablonparaméter, ami azt jelenti hogy a vektorban KeyPoint típusú értékek vannak.
detector.detect( img_1, keypoints_1 );
A detector egy objektum(referencia). Egy osztálynak(ilyen nincs c-ben) egy példánya, amelynek ponttal elválasztva a detect eljárását hívja meg a zárójelen belüli paraméterekkel.
Asszem kezdem érteni.
Csak a pontosítás kedvéért:
std:: Ez csak a vektor definiálásához kell? Máskor nem?
A vektor olyan, mint egy egydimenziós tömb, amely pl KeyPoint struktúrájú elemeket tartalmaz (ha c-ben csinálnám)?
azaz ha c-ben írnám:
typedef struct
{
int változó1;
char változó2;
}KeyPoint
int main()
{
KeyPoint vektor[];
return 0;
}
Köszi a türelmet, nameg a választ.





Az std::X azt jelöli, hogy az X nevet az std névtérben keresi a fordító. Ez bárminél szükséges, ami az std névtérben van, mint például a standard könyvtár MINDEN eleme, de te is hozzáadhatsz bármit:
namespace std
{
class A {};
}
Ekkor std::A jelöli az A osztályt.
A névterek elsősorban a névütközések megakadályozására vannak, sokkal jobb így, mintha minden változó és típus nevébe beleraknád a logikai egységet, amihez tartozik (vagy elfelejtenéd belerakni, és akkor keverednének a nevek).
És igen, a vector úgy működik, mint egy egydimenziós tömb, csak nem fix a mérete, futásidőben változik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!