Я использую сторонний API ( CryptEncrypt , если быть точным), который принимает массив C в качестве входящего-выходного параметра. Логически API сводится к следующей функции:
void add1(int *inout, size_t length)
{
for(size_t i = 0; i < length; i++)
{
inout[i] += 1;
}
}
Я пытаюсь избегать использования необработанных массивов, поэтому мой вопрос: могу ли я использовать std :: vector в качестве входных данных для API выше? Примерно так:
#include
int main()
{
std::vector v(10); // vector with 10 zeros
add1(&v[0], v.size()); // vector with 10 ones?
}
Могу ли я использовать гарантию «непрерывного хранения» вектора для записи в него данных? Я склонен полагать, что это нормально (это работает с моим компилятором), но мне было бы намного лучше, если бы кто-то более осведомленный, чем я, мог подтвердить, не нарушает ли такое использование стандартных гарантий C ++. :)
Заранее спасибо!