Я был в предположении, что функции STL могут использоваться только с контейнерами данных STL (например, vector
), пока я не увижу этот фрагмент кода:
#include <functional>
#include <iostream>
#include <numeric>
using namespace std;
int main()
{
int a[] = {9, 8, 7};
cerr << "Sum: " << accumulate(&a[0], &a[3], 0, plus<int>()) << endl;
return 0;
}
Он компилируется и запускается без каких-либо предупреждений или ошибок с g++, давая правильную выходную сумму 24.
Является ли такое использование массивов с функциями STL разрешено стандартом С++/STL ? Если да, то как архаичные структуры, такие как массивы, вписываются в грандиозный план STL шаблонных итераторов, контейнеров и функций? Кроме того, существуют ли какие-либо оговорки или подробности в таком использовании, что программист должен осторожно?