从 for(int &i : i) 获取当前迭代器
get current iterator from for(int &i : i)
这是我的循环;
for (sf::TcpSocket &client : clients)
{
...
}
在循环中,我想检查是否有人断开连接,如果是的,请将其从用户列表中删除,我只是不知道如何检查列表中的哪个用户。p>用户列表是100 sf :: tcpsockets的向量在循环中,如果有人断开连接,我只是跳过了剩下的代码,然后使用继续语句。
我检查他们是否通过发送" ping"而断开连接,如果没有给出任何响应,则它们断开了连接。
有一个用户列表,被命名为客户
基于循环的范围不应该用于修改容器本身。如果您想从容器中添加或删除元素,则应使用循环的标准:
for (auto it = std::begin(clients); it != std::end(clients);)
{
sf::TcpSocket& client = *it;
// accept data from the client socket
if (acceptStatus == sf::Socket::Disconnected)
{
it = clients.erase(it);
erased = true;
}
else
{
++it;
}
}
请注意,迭代器不会作为for循环邮政条件的一部分增加。如果我们这样做,当删除元素时,迭代器将被递增,这不是您想要的,因为您会意外跳过元素。
相关文章:
- Boost Spirit,获取迭代器内部语义动作
- 使用“decltype”获取迭代器的类型
- 为什么它不能在 c++ 中获取迭代器作为引用
- 从满足谓词的迭代器中均匀随机的容器中获取迭代器
- 获取迭代器错误的位置
- 获取迭代器在基类型 "intrusive doubly linked list" 的指针字典中的位置
- 获取迭代器返回的字符串的大小()
- 获取迭代器范围的每个第 n 个元素
- 从指针或引用获取迭代器
- std::min_element 获取迭代器的结果
- 使用std::find_if时,从传递给lambda的元素中获取迭代器
- 获取迭代器正在引用的STL容器的指针
- 获取迭代器以供常量参考
- 从指针获取迭代器
- 在(私有)继承向量<string>上获取迭代器
- 从Range Type中获取迭代器类型
- 通过值/引用传递vector并从中获取迭代器
- 试图从容器获取迭代器时出现编译错误
- 获取迭代器的位置??C++
- 从任何结构或元组按字符串形式的字段键获取迭代器