「std::copy」の版間の差分
提供: C++入門
(ページの作成:「std::copy とは、C++で指定範囲の要素をコピーするアルゴリズムです。std::vectorをコピーするときなどに使われます。 '...」) |
|||
(同じ利用者による、間の2版が非表示) | |||
行16: | 行16: | ||
[[std::copy]]では、コピー元と同じ順番で、コピー先に並べます。コピー元と逆向きに並べる場合には、[[std::reverse_copy]]を使用します。 | [[std::copy]]では、コピー元と同じ順番で、コピー先に並べます。コピー元と逆向きに並べる場合には、[[std::reverse_copy]]を使用します。 | ||
− | |||
== std::copyの例 == | == std::copyの例 == | ||
=== ソースコード vector_copy1.cpp === | === ソースコード vector_copy1.cpp === | ||
行41: | 行40: | ||
% ./vector_copy1 | % ./vector_copy1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | == std::copyを使って標準出力に出力する例 == | ||
+ | === ソースコード std_copy_with_ostream_iterator.cpp === | ||
+ | <syntaxhighlight lang="cpp"> | ||
+ | #include <iostream> | ||
+ | #include <vector> // std::vector | ||
+ | #include <iterator> // std::ostream_iterator | ||
+ | #include <algorithm> // std::copy | ||
+ | using namespace std; | ||
+ | int | ||
+ | main(int argc, char const* argv[]) | ||
+ | { | ||
+ | std::vector<int> v{1,2,3}; | ||
+ | std::copy(v.cbegin(),v.cend(), | ||
+ | std::ostream_iterator<int>( | ||
+ | std::cout, " ") ); | ||
+ | std::cout << std::endl; | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | === コンパイル === | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ | ||
+ | -Wl,-rpath=/usr/local/lib/gcc49 std_copy_with_ostream_iterator.cpp -o std_copy_with_ostream_iterator | ||
+ | </syntaxhighlight> | ||
+ | === 実行例 === | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | % ./std_copy_with_ostream_iterator | ||
+ | 1 2 3 | ||
+ | </syntaxhighlight> | ||
== 関連項目 == | == 関連項目 == | ||
* [[std::vector::insert]]: vector同士を連結する | * [[std::vector::insert]]: vector同士を連結する | ||
* [[std::copy_backward]] | * [[std::copy_backward]] | ||
* [[std::reverse_copy]] | * [[std::reverse_copy]] | ||
− | * [[std:: | + | * [[std::fill]] |
+ | * [[std::replace]] | ||
* [[std::swap]] | * [[std::swap]] | ||
* [[std::vectorをコピーする]] | * [[std::vectorをコピーする]] | ||
* [[std::vector]] | * [[std::vector]] | ||
− | <!-- vim: filetype=mediawiki --> | + | <!-- vim: filetype=mediawiki |
+ | --> |
2015年11月7日 (土) 17:56時点における最新版
std::copy とは、C++で指定範囲の要素をコピーするアルゴリズムです。std::vectorをコピーするときなどに使われます。
読み方
- std::copy
- えすてぃーでぃー こぴー
目次
概要
firstからendまでをresultにコピーします。
std::copy(first, end, result);
std::copyは、先頭から順番にコピーします。 入力の後半と出力の前半がオーバーラップしている場合、std::copyでは、意図通りのコピーができません。 その場合は、要素の後ろからコピーを行う std::copy_backward を使用します。
std::copyでは、コピー元と同じ順番で、コピー先に並べます。コピー元と逆向きに並べる場合には、std::reverse_copyを使用します。
std::copyの例
ソースコード vector_copy1.cpp
#include <iostream> #include <vector> #include <algorithm> // std::copy #include <iterator> // std::back_inserter using namespace std; int main(int argc, char const* argv[]) { vector<int> v1(1024*4*100, 0),v2; copy(v1.begin(), v1.end(), back_inserter(v2) ); return 0; }
コンパイル
g++ vector_copy1.cpp -o vector_copy1
実行例
出力はありません。
% ./vector_copy1
std::copyを使って標準出力に出力する例
ソースコード std_copy_with_ostream_iterator.cpp
#include <iostream> #include <vector> // std::vector #include <iterator> // std::ostream_iterator #include <algorithm> // std::copy using namespace std; int main(int argc, char const* argv[]) { std::vector<int> v{1,2,3}; std::copy(v.cbegin(),v.cend(), std::ostream_iterator<int>( std::cout, " ") ); std::cout << std::endl; return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 std_copy_with_ostream_iterator.cpp -o std_copy_with_ostream_iterator
実行例
% ./std_copy_with_ostream_iterator 1 2 3