草庐IT

标准ACL

全部标签

C++ 标准库方法删除列表中满足条件的一对项目中的一个

假设您有一个std::list其中包含一组值。为了演示起见,我们会说它只是std::list,但在我的例子中,它们实际上是二维点。无论如何,我想删除一对中的一个int满足某种距离标准的s(或点)。我的问题是如何将其作为不超过O(N^2)操作的迭代来处理。示例源是int的列表包含:{16,2,5,10,15,1,20}如果我给它一个距离标准1(即列表中的任何项目都不应在任何其他项目的1范围内),我想生成以下输出:{16,2,5,10,20}如果我向前迭代或{20,1,15,10,5}如果我向后迭代我觉得一定有一些很棒的方法可以做到这一点,但我被这个迭代器的双循环困住了,并试图在遍历列表时

c++ - 为什么 C++ 标准没有像 C# 添加 "properties"?

我所说的属性是指C#风格的属性,带有getter和setter。我很想知道为什么它们不是C++语言的一部分。我假设在编写规范时一定已经讨论过这样的特性,因此不将它包含在语言中是一个明智的决定。 最佳答案 这是一种实现方式:http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4031/Implementing-a-Property-in-C.htminti=5,j;PropTesttest;test.Count=i;//--callthesetmethod--j=test.Coun

c++ - 缺少用户定义的构造函数是否违反了非默认可构造结构的标准?

可以定义一个struct(a)没有用户定义的构造函数,(b)不能为其生成默认构造函数。例如,下面的Foo:structBaz{Baz(int){}};structFoo{intbar;Bazbaz;};您仍然可以使用聚合初始化创建Foo的实例:Foofoo={0,Baz(0)};我的普通编译器(VS2012)会勉强接受这个,但它会引发2个警告:warningC4510:'Foo':defaultconstructorcouldnotbegenerated.warningC4610:struct'Foo'canneverbeinstantiated-userdefinedconstruc

c++ - 有了一些 map 和一些根,我们想遵循什么标准算法有助于创建路径?

我们有一些点集(每个点都有它的X和Y)和多个根图[point,point]。我们可以通过根从任何点移动到任何可能的方向。我们得到了一些我们想要尽可能接近的2d点路径:如何计算这样的路径:这看起来与给定路径尽可能相似?什么是可以做这样的事情的有用算法(并且在BoostGeometry或Graph或任何其他常见的开源C++库中实现)? 最佳答案 这是一个非常可爱的小问题。如果你的图表连接良好,贪婪的方法可能会很有效。如:(1)将当前位置设置为最接近路径起点的节点,(2)移动到最接近路径中下一个点的相邻节点,直到没有更近的点,(3)选择路

c++ - 如果从文件流读取数据,为什么 gSOAP 将标准输入模式设置为二进制?

我一直在玩gSOAPXML数据绑定(bind),方法是将XML文档加载到C++类中,修改数据并将其序列化回XML。这是XML的片段-library.xml:201...以下代码将XML加载到对象中,修改对象并将其序列化回XML。请注意,XML是通过文件流从文件中加载的,要添加的数据是通过标准输入(cin)从用户处获取的。主要.cpp:#include"soapH.h"#include"gt.nsmap"#include#include#include#includeusingstd::cin;usingstd::cout;usingstd::endl;usingstd::ifstrea

c++ - 使用 ios::binary 从标准中读取

我正在尝试从标准输入中读取并通过其十进制值将每个字符彼此区分开来。据我了解,换行符(10)和回车符(13)将被解释为相同的字符。我想区分两者。我知道如果我正在读取一个文件,我可以使用ios::binary参数打开它。但是,如果我从标准输入读取数据呢? 最佳答案 您可以使用get从std::cin中读取。该方法专门用于读取无格式数据(seedoc) 关于c++-使用ios::binary从标准中读取,我们在StackOverflow上找到一个类似的问题: htt

c++ - 显示字符名称 C++ 的标准解决方案?

对于非字母输入字符的用户友好表示是否有标准函数?假设char(27)将是“ESC”或“Escape”或类似的东西。我问这个是因为这对我来说是一种在命令行中显示控件帮助的简单方法。编辑:正如@ypnos所指出的:问题是如何避免定义我自己的键名。我想知道boost或std中是否有我错过的功能或一些基本库?目前,Ascii-only可以为我工作,但我正在寻找一个“标准”解决方案,因为我不想在处理Unicode输入后重新实现——比如带有重音符号的字符不在Ascii中——稍后。我的程序代码将被发送到Linux和Windows,我也不希望名称在某些地方出现错误。 最佳答

c++ - 下标运算符的标准 C++ 函数对象模板

假设我目前有一个这样的模板函数:templatevoid*get_subobject(Kkey){T&obj=function_returning_T_ref();//dovariousotherthings...return&obj[key];}我想使下标操作可配置,以便用户可以应用他们自己的代码来映​​射obj和key到返回值。像这样:template>void*get_subobject(Kkey){T&obj=function_returning_T_ref();//dovariousotherthings...return&Op{}(obj,key);}我的问题是,对于默认模

c++ - 为什么在增强或标准中没有 "variant"?

any优于variant的一个优点是,不需要指定它可能包含的所有类型。我注意到,随着variant可能包含的类型数量的增加,人们倾向于在某个时候切换到any,因为他们根本不跟踪所有类型了。我认为any和variant之间的混合是可能的。可以将any的“placeholder”(通过放置new)存储在aligned_storage中,大小计算为constexpr函数或模板元函数,来自最大类型的样本,最终可能会被存储。另一方面,用户不需要指定any可能包含的所有类型。如果用户尝试在其中存储大于aligned_storage的内容,则any也可能随时抛出。这样的“variant_any”类是

c++ - visual studio 2015 无法编译有效代码(标准函数错误?)

我最近一直在使用c++11编写一些代码。这段代码在GCC和Clang中运行良好,我在我的项目中广泛使用了它。现在,我需要让它在MSVC中工作。我需要的所有c++11功能都标记为是。但是,此代码示例只是拒绝构建。我试图修复错误,但我还没有找到解决方案。这是示例:#include#include#includetemplatestructProviderfinal{Provider()=delete;Provider(constProvider&other):_callback{other._callback}{}Provider(Provider&&other):_callback{st