The majority of HTTP frameworks I’ve used store headers in a dictionary, because the common denominator between all headers is that they are string keys and string values.
To clarify: you might think that some headers are lists of strings, but that’s not actually true - the user can send any string to you. You really open yourself up to parsing problems if somebody transmits a header in a format that cannot be represented by your data structure.
Oftentimes what a framework will do is store the headers in the dictionary, and then provide getters and setters to access “friendly” parsed versions of commonly used data (but only if it parses correctly).
So for example in “requests”, a popular http framework in Python, there’s a class for the Response object. On that object you can access the special header dictionary at response.headers. Check the docs here under the section Response Headers
Basically they make a special dictionary that allows headers to be case-insensitive, and combining headers that are provided twice.
But they also provide a special property response.encoding which derives from the Content-Type header, just for convenience.
Not what you’re looking for but: use Conan and a third party library. Your problem is not properly defined and my first reaction is “WHY do you want to store headers?” Why? You have a solution in search of a problem. Why? What do you really want to do? What are you trying to achieve? Go further in your investigations because “storing headers” is not your purpose in life, think bigger, higher level!
Do it in Python. It’s a PITA in C++ if you don’t know that language. Read A Tour of C++ instead.
Python for the web, C++ for everything else. C++ is still popular, especially the modern version and you’ll get a good salary. But you should learn HTTP with other tools like Python.
With both Python and C++ skills, you’ll get jobs everywhere. Python for tools and CI, C++ for applications.