Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 KB | None | 0 0
  1. /* Gediminas Vasiliauskas
  2. Codingame dariau su pointeriu masyvu, kurie kreipiasi i funkcijas. Kito budo neradau,
  3. nes tai vienintelis budas norint padaryti "funkciju masyva".
  4. Mano kodas turejo veikti tokiu principu:
  5.  - sudedami funkciju pointeriai i masyva pagal ju svarba.
  6.  - tada atrenkami robotai, kurie yra palankiausi atlikti norimai funkcijai.
  7.  - robotas atlieka savo funkcija.
  8.  
  9. Pavyzdys su dinaminiu masyvu, kuris priema
  10. pointer'ius i funkcijas.
  11. pvz:
  12. */
  13.  
  14. #include <iostream>
  15. #include <vector>
  16.  
  17. using namespace std;
  18.  
  19. void withArgument(int number);
  20. void noArguments();
  21.  
  22. int main()
  23. {
  24.     // sukuriamas masyvas
  25.     vector<void (*)(int)> functions;
  26.  
  27.     // void(*)(int) yra void funkcijos pointer'is su argumentu int (ju gali buti ir daugiau).
  28.     // bet pvz jei
  29.     // void(*)() butu be argumentu ir tada reikalautu, kad funkcija butinai butu be argumentu.
  30.  
  31.  
  32.     // imetame funkcija i masyva
  33.     functions.push_back(withArguments);
  34.  
  35.     // taciau jei butu:
  36.     //functions.push_back(noArguments);
  37.     // MESTU ERROR'a, nes musu masyvas netoleruoja funkciju, kurios neturi argumentu.
  38.  
  39.     // kad iskviesti funkcija is masyvo rasome sitaip:
  40.     (*functionStack[0])(123);
  41.  
  42.     // rasome * pradzioje nes "to reference a pointer".
  43.     // rasome [0] nes norime pirmojo masyvo nario.
  44.     // (123) yra musu argumentas.
  45. }
  46.  
  47. void withArgument(int number){
  48.     cout << "My number is: " << number << endl;
  49. }
  50.  
  51. void noArguments(){
  52.     cout << "This function with no arguments works!" << endl;
  53. }
  54.  
  55. /*
  56. OUTPUT:
  57. My number is: 123
  58. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement