Iterator and Range-Based Algorithms

# Using std::ranges Algorithms with C-Style Arrays

## Can I use std::ranges algorithms with C-style arrays?

Yes, you can use std::ranges algorithms with C-style arrays in C++. The std::ranges algorithms are designed to work with any range, including C-style arrays, as long as the range provides the necessary iterator support.

### Example: Sorting a C-Style Array

Here’s an example of using std::ranges::sort() to sort a C-style array:

#include <algorithm>
#include <iostream>
#include <ranges>

int main() {
int numbers[] = {3, 1, 4, 1, 5, 9};

// Sorting the C-style array
std::ranges::sort(numbers);

// Printing the sorted array
for (const int& num : numbers) {
std::cout << num << " ";
}
}
1 1 3 4 5 9

### How It Works

• Including the Header: Include the <algorithm> and <ranges> headers to access the std::ranges algorithms.
• Using std::ranges::sort(): The std::ranges::sort() function can be used directly with the C-style array because arrays decay to pointers, providing the necessary iterator support.

### Practical Considerations

• Array Size: The size of the C-style array must be known at compile time. You can use std::size(numbers) to get the number of elements in the array if you need to pass the size explicitly.
• Performance: Using std::ranges algorithms with C-style arrays provides the same performance benefits as using them with standard containers like std::vector or std::array.

### Example: Applying Other Algorithms

You can use various std::ranges algorithms with C-style arrays. Here’s an example of using std::ranges::reverse() to reverse the elements of a C-style array:

#include <algorithm>
#include <iostream>
#include <ranges>

int main() {
int numbers[] = {3, 1, 4, 1, 5, 9};

// Reversing the C-style array
std::ranges::reverse(numbers);

// Printing the reversed array
for (const int& num : numbers) {
std::cout << num << " ";
}
}
9 5 1 4 1 3

### Conclusion

Using std::ranges algorithms with C-style arrays is straightforward and efficient. The algorithms provide a consistent and powerful interface for manipulating ranges, regardless of whether they are standard containers or C-style arrays.

This flexibility allows you to leverage the full power of the C++ standard library in a wide range of applications.

This Question is from the Lesson:

### Iterator and Range-Based Algorithms

An introduction to iterator and range-based algorithms, using examples from the standard library

Answers to questions are automatically generated and may not have been reviewed.

This Question is from the Lesson:

### Iterator and Range-Based Algorithms

An introduction to iterator and range-based algorithms, using examples from the standard library

Part of the course:

## Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Free, unlimited access

### This course includes:

• 124 Lessons
• 550+ Code Samples
• 96% Positive Reviews
• Regularly Updated
• Help and FAQ
Free, Unlimited Access

### Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.