Если я вас правильно понимаю - у вас есть несколько векторов, содержащих некоторый тип объекта (A), и вы хотите создать новый вектор, содержащий композицию всех членов других векторов без фактического копирования объектов вокруг, или в противном случае нарушать их собственные векторы?
Во-первых: существует ли жизнь нового составного вектора так, что ни один из его векторов-источников не изменится? То есть: вы не можете просто иметь необработанные указатели на исходные векторы из вашего составного вектора, если эти указатели будут признаны недействительными в течение времени жизни вашего составного.
Если ответом на этот вопрос является что-то иное, чем «определенно, указатели останутся действительными», тогда вам следует рассмотреть возможность использования общих указателей или чего-то подобного, чтобы изменение исходных векторов не оставляло ваш составной вектор в недопустимом состоянии. (т.е. не оставляйте указатель на случайную память).
Если предположить, что исходные векторы останутся неизменными с точки зрения их собственного содержимого в течение срока службы вашего композита, то простой ответ - "Да"
vector<A> source1;
vector<A> source2;
vector<A> source3;
vector<const A*> composite; // this is a sorted vector of the above vectors' contents (by pointer)
Для составного вектора вам нужно будет поместить в него содержимое (путем копирования) source1-3, а затем отсортировать его (или вы можете использовать отсортированный контейнер и сортировать при вставке элементов). Вам нужно определить свой собственный оператор сортировки, который разыменовывает указатели и применяет любой алгоритм сортировки к самим целевым объектам.
Это тебе помогает?