c++11相关内容
这是一个 C++/D 交叉问题.D 编程语言 有 范围 - 与 C++ 库如 Boost.Range- 不基于迭代器对.官方的 C++ Ranges Study Group 似乎陷入了制定技术规范的困境. 问题:当前的 C++11 或即将推出的 C++14 标准是否存在阻碍采用 D 范围的任何障碍 - 以及
..
我有从单个超类型派生的不同类型的对象.我想知道在这样的循环范围内使用 std::initializer 列表是否有任何缺点: for(auto object: std::initializer_list{object1, object2, object3}) {} 是否完全可以且高效,还是使用数组更好?对我来说,std::array 解决方案似乎对编译器的限制更大,并且显式
..
C++ 委员会中有一个范围研究小组: 但我没有关注这个研究组的历史,我不确定 C++1z 的预期交付类型(此外我不使用 boost.range,因此我对现有的实践).我们会有: 将范围作为一对第一个/最后一个迭代器? 范围上的联合和其他集合操作(例如 [v.begin()+5, v.begin()+7[ U [v.begin()+10, v.begin()+15[ U[v.b
..
有时我厌倦了所有这些 my_vector.begin(), my_vector.end() 噪音.去年在 boostcon 上,Andrei Alexandrescu 的主题演讲标题为 迭代器必须去(视频) 在 C++ 中引入范围有什么进展,所以我终于可以说 std::sort(my_vector) 了吗? 解决方案 Range in C++ 还是体验不足. 作为目前的实验实现,有
..
..
我发现自己刚刚在写这篇文章: 模板类范围类{上市:类迭代器 {朋友等级 range_class;上市:long int 运算符 *() const { return i_;}常量迭代器和运算符 ++() { ++i_;返回*这个;}迭代器运算符 ++(int) { 迭代器副本(*this);++i_;返回副本;}bool ope
..
为什么这段代码有效 std::vector整数向量(10);for(auto& i : intVector)std::cout
..
出现问题的情况 请考虑以下 c++ 代码: #include #include #include //超类A类{上市:虚拟 std::string get() const {返回“A";}};//子类B类:公共A {上市:虚拟 std::string get() const {返回“B";}};//打印对象类型的简单函数无效打印(常量
..
众所周知,有些语言有接口的概念.这是Java: 公共接口可测试{无效测试();} 如何在 C++(或 C++11)中以最紧凑的方式实现这一点,并且代码噪音很小?我很欣赏不需要单独定义的解决方案(让标题就足够了).这是一种非常简单的方法,即使我也觉得有问题 ;-) 类可测试{上市:虚拟无效测试()= 0;受保护:可测试();可测试(const Testable& that);可测试&opera
..
我知道派生类 unique_ptr 可能发生在多态类型需要基类 unique_ptr 的地方.例如,从函数返回时 unique_ptr一些函数(){return make_unique(new Derived());} 或作为参数传递给函数. //获取唯一指针的函数void someOtherFunction(unique_ptr&& ptr)//调用这个函数的代码someOtherFunc
..
一直以来,我发现自己在做这样的事情: 动物 *animal = ...if (Cat *cat = dynamic_cast(animal)) {...}else if (Dog *dog = dynamic_cast(animal)) {...}否则 { 断言(假);} 一旦我看到 C++11 中的闭包,我想知道,这样的事情可能吗? 动物 *animal = ...类型(动物,[](猫*猫
..
..
我一直在审查 C++11 的草稿版本标准.特别是关于 lambdas 的部分,我对不引入多态 lambdas 的原因感到困惑. 例如,在可以使用多态 lambda 的 100001 种方式中,我曾希望我们可以使用如下代码: templatevoid foo(容器 c){for_each(c.begin(), c.end(), [](T& t) { ++t; });} 原因是什么:
..
我的代码如下: std::cin >>字符串;对于 ( 字符 c : str )if ( c == 'b' ) vector.push_back(i)//而 i 是 c 在 str 中的索引 这可行吗?或者我将不得不使用老式的 for 循环? 解决方案 假设 str 是 std::string 或其他具有连续存储的对象: std::cin >>字符串;对于 (char&c : str
..
我想做这样的事情: for (int p : colourPos[i+1]) 如何跳过我的 colourPos 向量的第一次迭代? 我可以使用 .begin() 和 .end() 吗? 解决方案 现场演示链接. #include #include #include #include 模板结构跳过{夯
..
C++ 中的多重映射似乎很奇怪,我想知道为什么 #include #include 使用命名空间标准;typedef unordered_multimap我的地图;int main(int argc, char **argv){我的地图;map.insert(MyMap::value_type('a', 1));map.ins
..
如何迭代元组(使用 C++11)?我尝试了以下方法: for(int i=0; i::value; ++i)std::get(my_tuple).do_sth(); 但这不起作用: 错误 1:抱歉,未实现:无法将“Listener ..."扩展为固定长度的参数列表. 错误 2:i 不能出现在常量表达式中. 那么,如何正确迭代元组的元素? 解决方案 Boost.Fus
..
我正在尝试解决一个问题,其中 decltype 将大大简化事情,但我在 *thisdecltype 时遇到了问题/code> 并添加 const 限定符.下面的示例代码演示了这个问题. #include 结构 Foo{空栏(){static_cast(*this).bar();}无效栏()常量{std::cout
..
为什么下面的方法 getRanks() 编译不出来,我该如何优雅地修复它? 我想要做的就是定义一个返回成员引用的成员访问器方法.引用不是 const 因为我以后可能会修改它所引用的内容.但是由于成员方法不修改对象,所以我将它声明为const.编译器(clang,std=c++11)然后坚持认为存在“删除限定符"的“引用绑定".但我不会放弃预选赛,是吗?如果我是,为什么: struct te
..
..