What is the best way to read input from keyboard using SDL?
===

I'm running an `update()` method n times per second to "update" the keyboard input from the user so I can read it later in the logic part of the program. So I find two ways of implementing this in the SDL Docs and I'm not sure which one should I use.

1; Loop for all events using SDL_PollEvent searching for key down/up events and saving the key states in a map so I can check for each key state in the logic of the program.

Note: Alternatively, I can also use SDL_PoopEvents instead of SDL_PollEvent to take only the event types that matter; so, it would not "thrown away" the events on the queue.

    std::map<int, bool> keyboard; // Saves the state(true=pressed; false=released) of each SDL_Key.
    
    void update()
    {
    	SDL_Event event;
    	while( SDL_PollEvent(&event))
    	{
    		switch(event.type)
    		{
    		case SDL_KEYDOWN:
    		    keyboard[event.key.keysym.sym] = false;
    		    break;
    		case SDL_KEYUP:
    		    keyboard[event.key.keysym.sym] = true;
    		    break;
    		}
    	}
    }

2; Taking a snapshot from the keyboard each frame so I can read it easily.

    Uint8* keyboard;
    void update()
    {
    	keyboard = SDL_GetKeyState(NULL);
    }

With any of above implementations I can read `keyboard` just like this:

    if (key_map[SDLK_Return]) printf("Return has been pressed.");


Also, is there another way to do so?

Thanks!