C++98stlbeginner
std::valarray
C++98 · The Foundation · Compiler flag: -std=c++98
Explanation
A numeric array class optimized for element-wise mathematical operations.
Real-World Scenario
Apply a mathematical formula to every sample in a digital signal processing pipeline.
Quick Snippet
snippet.cpp
#include <valarray>
std::valarray<double> data = {1.0, 2.0, 3.0};
std::valarray<double> squared = data * data;Full Example
valarray.cpp
// CodeNebula - C++98 Example: valarray
// Compile: g++ -std=c++98 -Wall -Wextra -o example valarray.cpp
#include <iostream>
#include <valarray>
#include <cmath>
int main() {
// valarray supports element-wise arithmetic
double a_data[] = {1.0, 2.0, 3.0, 4.0, 5.0};
double b_data[] = {10.0, 20.0, 30.0, 40.0, 50.0};
std::valarray<double> a(a_data, 5);
std::valarray<double> b(b_data, 5);
// Element-wise operations
std::valarray<double> sum = a + b;
std::valarray<double> prod = a * b;
std::valarray<double> scaled = a * 3.0;
std::cout << "a + b: ";
for (std::size_t i = 0; i < sum.size(); ++i) std::cout << sum[i] << " ";
std::cout << std::endl;
std::cout << "a * b: ";
for (std::size_t i = 0; i < prod.size(); ++i) std::cout << prod[i] << " ";
std::cout << std::endl;
std::cout << "a * 3: ";
for (std::size_t i = 0; i < scaled.size(); ++i) std::cout << scaled[i] << " ";
std::cout << std::endl;
// Aggregate functions
std::cout << "sum(a): " << a.sum() << std::endl;
std::cout << "min(a): " << a.min() << std::endl;
std::cout << "max(a): " << a.max() << std::endl;
// Apply math functions
std::valarray<double> sq = std::sqrt(a);
std::cout << "sqrt(a): ";
for (std::size_t i = 0; i < sq.size(); ++i) std::cout << sq[i] << " ";
std::cout << std::endl;
return 0;
}
// Expected output:
// a + b: 11 22 33 44 55
// a * b: 10 40 90 160 250
// a * 3: 3 6 9 12 15
// sum(a): 15
// min(a): 1
// max(a): 5
// sqrt(a): 1 1.41421 1.73205 2 2.23607
Run command
g++ -std=c++98 -Wall -Wextra -o example valarray.cpp