2 jianggushideren jianggushideren 于 2015.07.14 22:33 提问

请问下面这段代码的意思:C++ 中的冒号操作符
c++

PaketRouter类里有一个成员:
// Map from ssrc to sending rtp module.
std::list rtp_modules_ GUARDED_BY(crit_.get());
请问下面的函数里冒号是什么意思?

 bool PacketRouter::TimeToSendPacket(uint32_t ssrc,
                                    uint16_t sequence_number,
                                    int64_t capture_timestamp,
                                    bool retransmission) {
  CriticalSectionScoped cs(crit_.get());
  for (auto* rtp_module : rtp_modules_) {//这个冒号是什么意思?
    if (rtp_module->SendingMedia() && ssrc == rtp_module->SSRC()) {
      return rtp_module->TimeToSendPacket(ssrc, sequence_number,
                                          capture_timestamp, retransmission);
    }
  }
  return true;
}

8个回答

caozhy
caozhy   Ds   Rxr 2015.07.14 22:57

用过C#和Java么?这是迭代器循环。表示遍历一个集合,对每个元素循环一次。C++ 11新增的。
类似C#的
foreach (var item in list) ...
或者Java的
for (sometype item : list)

Evankaka
Evankaka   Ds   Rxr 2015.07.14 22:37

bool PacketRouter::TimeToSendPacket,,这是规定的写法
冒号表示PacketRouter这个类有个函数TimeToSendPacket。返回bool 。参数uint32_t ssrc。。

Evankaka
Evankaka 百度 c++11标准 for,11标准新加了很多特性,有兴趣可以研究研究
2 年多之前 回复
jianggushideren
jianggushideren 我c++还是菜鸟水平,麻烦指教一下,或者我搜索这个知识点该用什么关键字?
2 年多之前 回复
Evankaka
Evankaka 这个是C++ 11新出的特性,应该是参考了java的语法。
2 年多之前 回复
jianggushideren
jianggushideren 回复林炳文Evankaka: 非常感谢!请问这里的具体原理是什么,冒号是一个操作符吗,哪里有可以参考的资料?
2 年多之前 回复
Evankaka
Evankaka rtp_modules_是List,依次取它里面的它一个元素,每取用指针rtp_module批向
2 年多之前 回复
jianggushideren
jianggushideren 非常感谢,两个冒号我知道,for循环里的那个冒号是什么意思:
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.07.14 22:46

这个是c++11新语法。表示遍历rtp_modules_链表,每个元素放到rtp_module变量中。

jianggushideren
jianggushideren   2015.07.14 23:28

再次感谢大家,我搜了一下for range,这篇文章写得不错:
http://blog.csdn.net/hackmind/article/details/24329957

jianggushideren
jianggushideren   2015.07.14 22:38

多谢回答,两个冒号我知道,for循环里的那个冒号是什么意思:

 for (auto* rtp_module : rtp_modules_) 
frank_20080215
frank_20080215   2015.07.15 08:07

for (auto* rtp_module : rtp_modules_) -- for 循环,语法与java5很相近。对集合元素的循环遍历

u012401478
u012401478   2015.07.15 08:34

用过C#和Java么?这是迭代器循环。表示遍历一个集合,对每个元素循环一次。C++ 11新增的。

cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.07.15 08:43
Csdn user default icon
上传中...
上传图片
插入图片