笔记2 (标准库类型string、vector和bitset)

抽象数据类型(abstract data type)

通常,头文件中应该只定义确定必要的东西


标准库string 类型

 

#include<string>

using  std::string;


string的定义和初始化

string类型的输入操作符:

         string s;

         cin>>s;

读取并忽略开关所有的空白字符(如空格、换行符,制表符);

读取字符直到再次遇到空白字符,读取终止。

 

string的输入操作符会返回所给的数据流,因此,可以把输入当作判断条件。

 

用getline读取整行文本

getline接受两个参数:一个输入流对象和一个string对象。

getline并不忽略行开关的换行符。

 

string类型的输入操作符和getline函数分别如何处理空白字符:

    1、string类型的输入操作符对空白操作符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直到再次遇到空白字符,读取终止(该空白字符仍然在输入流中)。

   2、getline函数对空白字符的处理:不忽略开关的空白字符,读取字符直到遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在string对象中)。

 

string对象的操作:

s.empty();

s.size();

s[n];

s1 + s2;

s1 = s2;

 

string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个string类型的。

string类型可通过下标操作符([ ])访问string对象的某个字符。

 

string对象中字符的处理

#include<cctype>



标准库vector类型

一个容器中的所有对象都必须是同一个类型的。

#include<vector>

using  std::vector;

vector是一个类模板(class  template)。

vector对象(以及其他标准库容器对象)的重要属性就在于可以在运行高效地添加元素,因为vector增长的效率高,在元素什己知的情况下,最好是动态地添加元素。

 

vector对象的操作

v.empty();

v.size();

v.push_back(t);

v1 = v2;

v1 == v2;

 

迭代器简介

迭代器(iterator)所存的标准库容器都定义了相关的迭代器类型。

若一种类型支持一组确定的操作,(这些操作可用来遍历容器内的元素,并访问这些元素的值),我们就称这种类型为迭代器。

 

begin和end操作

由begin返回的迭代器指向第一个元素;

由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称之为超出末端迭代器(off-the-end iterator)。

 

const_iterator

该类型只能用于读取容器内元素,但不能更改其值,迭代器本身可以改变。

对const_iterator解引用时,可以得到一个指向const对象的引用。

const_iterator与const iterator不相同,后者基本没用。

 

迭代器的自述操作:

iter±n                可用迭代器加上或减去一个整型值

iter1 – iter2         计算两个迭代器对象的距离,该距离是名为defference_type的signed(只是数值类型,不代表两类型完全相同)类型的值,iter1与iter2两者必须都指向同一vector的元素或末端之后的下一个元素。

两个迭代器相加的操作是末定义的。

 

标准库bitset类型

#include<bitset>

using std::vector;

bitset类型对象的区别在公在其长度而不在其基类型。

bitset<n>  b;

 

bitset<n> b(s);           //b是string对象s中含有的位串的副本

当用string对象初始化bitset对象时,string对象直接表示为位模式

 

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值