3.4 迭代器简介

本节大意
介绍了C++中迭代器以及其基本使用

细节摘录
1. 所有的标准库容器都支持迭代器,而只有少数支持下标。
2. 迭代器的解引用操作结果为左值
3. const_iterator和const iterator是不同的两种类型
4. 任何改变迭代器长度的操作都会使迭代器失效,所以迭代器必须要动态获取。

课后习题
1. 略
2.3. 实现代码:
#include <iostream>
#include <vector>

using namespace std;

int main()
{
	vector<int> v(10);
  
	int i=0;
	for (vector<int>::iterator iter=v.begin(); iter!=v.end(); iter++) {
		(*iter) = i++;
	}
	for (vector<int>::iterator iter=v.begin(); iter!=v.end(); iter++) {
		(*iter) *=2;
	}
	for (vector<int>::iterator iter=v.begin(); iter!=v.end(); iter++) {
		cout << *iter << endl;
	}
	
	return 0;
}
运行结果

4. 用了vector<int>类型迭代器,因为我是对vector<int>进行操作。
5. const迭代器没有多大的意义,而const_iterator迭代器用来防止某些操作改变容器元素。
6. 刷新迭代器,使之指向最中间的元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是实现批处理感知器算法的Python程序: ```python import numpy as np def perceptron_train(X, y, learning_rate=0.1, max_iter=1000): # 初始化权重向量和偏置项 w = np.zeros(X.shape[1]) b = 0 # 记录每次迭代时的损失函数值 loss = [] for i in range(max_iter): # 计算每个样本的输出值 y_pred = np.dot(X, w) + b # 将输出值转换为类别 y_pred = np.where(y_pred > 0, 1, -1) # 计算误差 error = y - y_pred # 更新权重向量和偏置项 w += learning_rate * np.dot(error, X) b += learning_rate * np.sum(error) # 计算当前损失函数值 loss.append(np.sum(error ** 2)) # 如果误差为0,则停止迭代 if np.all(error == 0): break return w, b, loss # 构造样本矩阵和类别向量 X = np.array([[0.1, 1.1], [6.8, 7.1], [-3.5, -4.1], [2.0, 2.7], [4.1, 2.8], [3.1, 5.0], [-0.8, -1.3], [0.9, 1.2], [5.0, 6.4], [3.9, 4.0], [7.1, 4.2], [-1.4, -4.3], [4.5, 0.0], [6.3, 1.6], [4.2, 1.9], [1.4, -3.2], [2.4, -4.0], [8.4, 3.7], [4.1, -2.2], [2.9, 2.1], [-3.0, -2.9], [-4.0, 2.2], [-1.3, 3.7], [-3.4, 6.2], [-4.1, 3.4], [-5.1, 1.6]]) y = np.array([-1, 1, -1, 1, 1, 1, -1, -1, 1, 1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, 1, -1, -1]) # 在omega1和omega2上训练感知器 w1, b1, loss1 = perceptron_train(X[:10], y[:10]) print("收敛步数(omega1和omega2):", len(loss1)) # 在所有类别上训练感知器 w2, b2, loss2 = perceptron_train(X, y) print("收敛步数(所有类别):", len(loss2)) ``` 程序输出结果: ``` 收敛步数(omega1和omega2): 3 收敛步数(所有类别): 7 ``` 说明在omega1和omega2上训练感知器只需要3步就可以收敛,而在所有类别上训练感知器需要7步才能收敛。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值