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标准新加了很多特性,有兴趣可以研究研究
大约 3 年之前 回复
jianggushideren
jianggushideren 我c++还是菜鸟水平,麻烦指教一下,或者我搜索这个知识点该用什么关键字?
大约 3 年之前 回复
Evankaka
Evankaka 这个是C++ 11新出的特性,应该是参考了java的语法。
大约 3 年之前 回复
jianggushideren
jianggushideren 回复林炳文Evankaka: 非常感谢!请问这里的具体原理是什么,冒号是一个操作符吗,哪里有可以参考的资料?
大约 3 年之前 回复
Evankaka
Evankaka rtp_modules_是List,依次取它里面的它一个元素,每取用指针rtp_module批向
大约 3 年之前 回复
jianggushideren
jianggushideren 非常感谢,两个冒号我知道,for循环里的那个冒号是什么意思:
大约 3 年之前 回复
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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
下面这段代码要循环延时输出0 1 2 3 4,输出结果是否正确,若不正确请修改,并理
for(var i=0;i {        setTimeout(function()        {               document.write(i + " ");        },100); } 以上代码输出:5,5,5,5,5 修改如下: for(vari=0;i {        (function(i){               setTi
C++中的冒号运算符 ---- : 和 ::
冒号运算符
01234
冒泡排序 class bubblle_sort { public function lth(array $arr) { for ($i=0;$i$arr)-1;$i++){ for ($j=0;$j$arr)-1-$i;$j++){ if ($arr[$j]>$arr[$j+1]) {
java8中双冒号的使用
http://blog.csdn.net/lsmsrc/article/details/41747159
java8 双冒号运算符::
前面的章节我们提及到过双冒号运算符,双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。 例如 表达式: person -> person.getAge(); 可以替换
JS里冒号操作符的含义?
JS里冒号操作符的含义? foo.oOffset = {x:e.layerX,   y:e.layerY }; 等价于: foo.oOffset = {x:e.layerX,   y:e.layerY };相当于:foo.oOff
python学习作业D1
lesson1 0. Python 是什么类型的语言? Python是脚本语言(scripting language) 1. IDLE 是什么? IDLE是开发python程序的基本IDE(集成开发环境) 2. print() 的作用是什么? 打印 3. Python 中表示乘法的符号是什么? python中乘号是* 4. 为什么 >>>print
Java8中的[方法引用]“双冒号”——走进Java Lambda(四)
前面的章节我们提及到过双冒号运算符,双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。 例如 表达式: person -> person.getAge(); 可
零基础学习Python 作业 第4章
———-CH04 homework———- 0.请问以下代码会打印多少次“我爱鱼C!” Answer: 无限次,因为’C’ = 67 == truth,满足while的循环条件 1.请问以下代码会打印多少次“我爱鱼C!” 1. i = 10 2. while i: 3. print('我爱鱼C!') 4. i = i - 1 Answer: 10次 ...
C++中双冒号作用域解析符的含义
先把各家的解释复制在这里,意思都差不多。Visual C++ Language ReferenceScope Resolution Operator: :: You can tell the compiler to use the global identifier rather than the local identifier by prefixing the identifi