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