为什么发短信会用到策略模式
时间: 2023-11-01 10:41:34 浏览: 42
发短信的方式有很多种,比如直接发送、定时发送、群发等,而每种方式可能有不同的实现细节和处理逻辑,这时就可以使用策略模式。策略模式将每一种不同的方式看作是一个独立的策略,通过将这些策略封装在一个接口中,并使得它们可以互相替换,从而实现了不同策略的动态选择。这样,在发短信时,可以根据具体的需求,选择合适的策略来进行发送,实现了代码的高扩展性和可维护性。
相关问题
为什么会用到defaultdic?
使用 defaultdict 可以避免在遍历当前房间中的传送门编号时出现 KeyError 的问题。如果使用普通的字典,当访问不存在的键时,会抛出 KeyError 异常,而使用 defaultdict 可以自动创建一个默认值,避免了这个问题。
在这个问题中,输入数据中的每个房间都有若干个传送门,这些传送门的编号存储在一个列表中。我们需要在广度优先搜索过程中遍历每个房间中的传送门编号,如果使用普通的字典,需要先判断当前房间是否存在传送门,然后再遍历传送门编号。如果当前房间没有传送门,那么遍历传送门编号时就会抛出 KeyError 错误。而使用 defaultdict,即使当前房间没有传送门,也可以直接遍历传送门编号,因为默认值是一个空列表,不会抛出 KeyError 错误。
因此,在这个问题中使用 defaultdict 可以简化代码,避免 KeyError 错误,提高代码的可读性和可维护性。
迭代器为什么会用到vector
迭代器是一种用于遍历容器中元素的工具,而vector是一种STL容器,它可以存储多个元素并提供访问和管理这些元素的方法。因此,当我们需要遍历一个vector中的元素时,我们可以使用迭代器来实现。
具体来说,vector提供了begin()和end()两个函数,分别返回指向第一个元素和最后一个元素后面一位的迭代器。我们可以用这两个迭代器来遍历vector中的所有元素,比如:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
```
在这个例子中,我们使用了auto关键字来让编译器自动推导迭代器的类型,然后利用begin()和end()函数获取vector的起始和结束迭代器,遍历了整个vector并输出了每个元素的值。
因此,迭代器会用到vector,是因为vector是一种STL容器,提供了遍历元素的方法,而迭代器则是一种遍历容器元素的工具。
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)