If you already have the initial data laying around, say in a C style array, don't forget that these STL containers have "2-iterator constructors".
const char raw_data[100] = { ... };
std::vector<char> v(raw_data, raw_data + 100);
Edit: I was asked to show an example for a map. It isn't often you have an array of pairs laying around, but in the past I have created a Python script that generated the array of pairs from a raw data file. I then #include this code-generated structure and initalized a map with it like this:
#include <map>
#include <string>
#include <utility>
using namespace std;
typedef map<string, int> MyMap;
// this array may have been generated from a script, for example:
const MyMap::value_type raw_data[2] = {
MyMap::value_type("hello", 42),
MyMap::value_type("world", 88),
};
MyMap my_map(raw_data, raw_data + 2);
Alternatively if you have an array of keys, and and array of data values, you can loop over them, calling map.insert(make_pair(key, value));
You also ask about memset and vector. I don't think there is any real merit to using memset to initialize a vector, because vectors can be given an initial value for all their elements via the constructor:
vector<int> v2(100, 42); // 100 ints all with the value of 42
vector<string> v(42, "initial value"); // 42 copies of "initial value"