STL ソース コード分析: コードのテストと一時オブジェクトの理解

目的: STL を深く理解する
最近、非常に基本的な文法を見ましたが、これも一般の人がよく使う一時オブジェクトで、名前のないオブジェクトの一種です (値渡し操作ではコピー操作が発生するため、フォーム一時オブジェクト)、Liezi、shape(2,3)、または int(8) の両方が一時オブジェクトを生成することがわかります。これはコンストラクターを呼び出すことと同じであり、次の例で確認できます。オブジェクト myprint() の場合、これは関数ではなく一時オブジェクトです。関数のパラメータに使用できます。以下のようにfor_eachにパラメータを渡すために入れます。

#include<vector>
#include<algorithm>
#include<iostream>

template <typename T>
class myprint
{
    
    
	public:
		void operator()(const T& elem)
		{
    
    std::cout << elem <<' ';}
};

int main()
{
    
    
	int ia[6] = {
    
    0,1,2,3,4,5};
	std::vector<int> iv(ia, ia+6);
	std::for_each(iv.begin(), iv.end(), myprint<int>());
	std::cout<<std::endl;
}

操作の結果、iv のパラメータに渡された myprint() が表示され、コピーが発生しました。
ここに画像の説明を挿入
詳細については、Hou Jie 氏が翻訳した STL ソースコード解析本を参照してください。

おすすめ

転載: blog.csdn.net/weixin_43851636/article/details/122130417