使用copy复制,fill填充
下面代码使用fill函数给chars从头到尾填充了字符’5’
然后又用copy函数拷贝到标准输出流,用空格分隔
std::array<char, 10> chars{};
std::ranges::fill(chars, '5');
std::cout << "chars after filling with 5s: ";
std::ostream_iterator<char> output{ std::cout, " " };
std::ranges::copy(chars, output);
输出为:
chars after filling with 5s: 5 5 5 5 5 5 5 5 5 5
使用fill_n填充
std::fill_n(chars.begin(), 5, 'A');
std::cout << "\nchars after filling five elements with 'A's: ";
std::ranges::copy(chars, output);
输出为:
chars after filling five elements with 'A's: A A A A A 5 5 5 5 5
使用generate 生成数据
char nextLetter() {
static char letter{ 'A' };
return letter++;
}
std::ranges::generate(chars, nextLetter);
std::cout << "\nchars after generating letters A-J: ";
std::ranges::copy(chars, output);
输出为:
chars after generating letters A-J: A B C D E F G H I J
使用generate_n生成数据
// generate values for first five elements of chars with nextLetter
std::ranges::generate_n(chars.begin(), 5, nextLetter);
std::cout << "\nchars after generating K-O into elements 0-4: ";
std::ranges::copy(chars, output);
输出为:
chars after generating K-O into elements 0-4: K L M N O F G H I J
nextLetter
函数用lambda表达式替换也是可以的