网站开发实训报告参考文献,做一个网站如何做,南宁整合推广公司,集团网站建设特点互联网课堂std::copy_n 是 C 标准库中的一个算法#xff0c;用于将指定数量的元素从一个输入范围复制到一个输出范围。那这就提供了很灵活的用法了。下面我们举例说明。
语法
template class InputIt, class Size, class OutputIt
OutputIt copy_n(InputIt first, Size count…std::copy_n 是 C 标准库中的一个算法用于将指定数量的元素从一个输入范围复制到一个输出范围。那这就提供了很灵活的用法了。下面我们举例说明。
语法
template class InputIt, class Size, class OutputIt
OutputIt copy_n(InputIt first, Size count, OutputIt result);InputIt表示输入范围的迭代器类型指向要复制的起始位置。Size表示要复制的元素数量。OutputIt表示输出范围的迭代器类型指向复制的目标位置。first指向输入范围中要复制的起始位置的迭代器。count要复制的元素数量。result指向输出范围中复制的目标位置的迭代器。
功能
std::copy_n 从输入范围 [first, first count) 复制 count 个元素到输出范围 [result, result count)。返回指向输出范围中最后一个复制元素之后的位置的迭代器。
示例一
#include iostream
#include algorithm
#include vectorint main() {std::vectorint source {1, 2, 3, 4, 5};std::vectorint destination(5);// 将 source 中的前三个元素复制到 destination 中auto it std::copy_n(source.begin(), 3, destination.begin());// 输出复制后的 destinationfor (int num : destination) {std::cout num ;}std::cout std::endl;return 0;
}输出
1 2 3 0 0在这个示例中std::copy_n 从 source 向量中复制了前三个元素到 destination 向量中。最后两个位置被填充为默认值 0。std::copy_n 返回指向输出范围中最后一个复制元素之后的位置的迭代器这里没有使用返回值。
示例二
#include algorithm
#include cstddef
#include iostream
#include iterator
#include fstreamstruct MyLogSink { // (1)!void send(const char* base_filename, int line, const char* message, std::size_t message_len, std::ostream os) {os base_filename : line ;std::copy_n(message, message_len, std::ostreambuf_iteratorchar{os});os \n;}
};int main() {MyLogSink logSink;const char* filename example.cpp;int line 42;const char* message This is a log message.;std::size_t message_len std::strlen(message);// 输出到标准输出logSink.send(filename, line, message, message_len, std::cout);// 输出到日志文件std::ofstream logFile(log.txt, std::ios::app);if (logFile.is_open()) {logSink.send(filename, line, message, message_len, logFile);logFile.close();} else {std::cerr Unable to open log file std::endl;}return 0;
}
在这里调用同一个接口send指定不同的输出对象决定了是标准输出打印到控制台还是写入到文件中是不是灵光一闪很方便进行输出重定向啊~~