Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Gediminas Vasiliauskas
- Codingame dariau su pointeriu masyvu, kurie kreipiasi i funkcijas. Kito budo neradau,
- nes tai vienintelis budas norint padaryti "funkciju masyva".
- Mano kodas turejo veikti tokiu principu:
- - sudedami funkciju pointeriai i masyva pagal ju svarba.
- - tada atrenkami robotai, kurie yra palankiausi atlikti norimai funkcijai.
- - robotas atlieka savo funkcija.
- Pavyzdys su dinaminiu masyvu, kuris priema
- pointer'ius i funkcijas.
- pvz:
- */
- #include <iostream>
- #include <vector>
- using namespace std;
- void withArgument(int number);
- void noArguments();
- int main()
- {
- // sukuriamas masyvas
- vector<void (*)(int)> functions;
- // void(*)(int) yra void funkcijos pointer'is su argumentu int (ju gali buti ir daugiau).
- // bet pvz jei
- // void(*)() butu be argumentu ir tada reikalautu, kad funkcija butinai butu be argumentu.
- // imetame funkcija i masyva
- functions.push_back(withArguments);
- // taciau jei butu:
- //functions.push_back(noArguments);
- // MESTU ERROR'a, nes musu masyvas netoleruoja funkciju, kurios neturi argumentu.
- // kad iskviesti funkcija is masyvo rasome sitaip:
- (*functionStack[0])(123);
- // rasome * pradzioje nes "to reference a pointer".
- // rasome [0] nes norime pirmojo masyvo nario.
- // (123) yra musu argumentas.
- }
- void withArgument(int number){
- cout << "My number is: " << number << endl;
- }
- void noArguments(){
- cout << "This function with no arguments works!" << endl;
- }
- /*
- OUTPUT:
- My number is: 123
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement