C++ 标准库读书杂记一

1.复杂度与Big-O标记

O(1);时间复杂度与个数无关

O(log(n));时间复杂度与个数呈对数关系

O(n);时间复杂度与个数呈线性关系

O(nlog(n));时间复杂度与个数对数与线性成绩关系

O(n^{2});时间复杂度与个数呈平方关系

考虑复杂度时,输入量必须足够大才有意义。

2.一致性初始化(uniform initialization)和初值列 (initializer list)

一致性初始化:

int values[] {1,2,3,4};

char a {'*'};

char b {6};

char c {999};//不能通过编译,个人理解:结合python学习经验,{}在编译器中被解释成一个list,list的类型由char决定,那么就是 list<char> [] {9999};char 类型 0 - 127;专业术语:窄化,精度降低。类型隐式转换失败。0-127的int可以转换成功。

初值列 (initializer list):(explicit 关键字,拒绝使用list初始化,需要与形参one by one)

如果使用列表初始化值存在丢失信息的风险,则编译器将报错:

std::initializer_list <_type> 与 初始值{_type,_type,_type}(右值list)结合使用。

// STLexample.cpp : 定义控制台应用程序的入口点。
//

// STLexample.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <initializer_list>
#include <vector>
#include <stdarg.h>

using namespace std;

class initial
{
public:
	vector<int> veca;
public:
	initial(int _a, int _b);
	initial(std::initializer_list<int> lista);
	void print_self(string funcname, long line);
};
initial::initial(int _a, int _b)
{
	veca.push_back(_a);
	veca.push_back(_b);
	print_self(__FUNCTION__,__LINE__);
}
initial::initial(initializer_list<int> lista)
{
	veca = lista;
	print_self(__FUNCTION__ ,__LINE__);
}
void initial::print_self(string funcname, long line)
{
	cout << funcname <<line<< endl;
	for each (int var in veca)
	{
		cout << var << "\r\n" << endl;
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	initial init1(77, 5);
	initial init2{ 77, 5 ,8};
	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值