Очевидный ответ заключается в использовании пользовательского распределителя, однако вы можете обнаружить, что это действительно довольно тяжелое решение для того, что вам нужно. Если вы хотите сделать это, самый простой способ - взять распределитель, определенный (в качестве аргумента шаблона scond по умолчанию для вектора <>) реализацией, скопировать его и заставить работать должным образом.
Другое решение может состоять в том, чтобы определить специализацию шаблона вектора, определить столько интерфейса, сколько вам действительно нужно, и реализовать настройку памяти.
Наконец, как насчет определения вашего собственного контейнера с соответствующим интерфейсом STL, определения итераторов произвольного доступа и т. Д. Это может быть довольно легко, учитывая, что базовый массив будет хорошо отображаться на вектор <>, а указатели на него будут отображаться на итераторы.
Комментарий к ОБНОВЛЕНИЕ : "Есть ли способ создать std :: vector, используя заданный кусок предварительно выделенного массива памяти T * и размер этой памяти?"
Конечно, простой ответ здесь - «Нет». Если вы хотите, чтобы результатом был вектор <>, тогда он должен поддерживать рост по мере необходимости, например, с помощью метода reserve (), и это не будет возможно для данного фиксированного распределения. Таким образом, настоящий вопрос действительно: чего именно вы хотите достичь? Что-то, что можно использовать, например, вектор <>, или что-то, что действительно должно в каком-то смысле быть вектором, и если да, то каков этот смысл?