草庐IT

const_set

全部标签

c++ - 使用 const char[] 或 const std::string 哪一个?

哪个对字符串文字更好,标准字符串还是字符数组?我的意思是说常量字符串,比如说constcharname[]="so";//ortouseconststringname="so"; 最佳答案 对于字符串文字,并且仅对于来自文字的字符串常量,我会使用constchar[]。std::string的主要优点是它有免费的内存管理,但这不是字符串文字的问题。它是文字的实际类型,它可以直接用于任何需要旧C样式空终止字符串或C++字符串(隐式转换开始)的API。您还可以通过使用数组而不是指针来获得编译时大小的实现。现在,在定义函数接口(inter

c++ - C++中set的erase函数会改变其他元素的地址吗?

我有以下代码:settest;test.insert(key1);test.insert(key2);iter1=test.find(key1);iter2=test.find(key2);test.erase(iter1);我的问题是,如果key1被删除了,现在测试中是否可以用iter2引用key2?谢谢 最佳答案 是的,set的erase只会使指向被删除元素的迭代器无效(注意,这不一定适用于所有容器)。 关于c++-C++中set的erase函数会改变其他元素的地址吗?,我们在Sta

C++ 标准 : default "const T& value" in vector constructor for type 'int'

explicitvector(size_typen,constT&value=T(),constAllocator&=Allocator());vectorvec(10);cout::const_iteratoriter=vec.begin();iter!=vec.end();++iter){coutVS2010的输出:vec.size:100000000000问题>:根据最新的C++标准,当我们使用vectorObject(size_type)定义一个vector对象时,默认的int值是多少?在这里你可以看到,VS2010输出0作为默认的int值。但我不知道这是否是C++标准所要求的

c++ - 在 C++ 中适当使用全局 const 变量?

我正在为我的CS类(class)编写程序。它模拟了一家express公司在机场的事件。这是一个非常简单的小程序,由一些头文件和源文件以及一个编排模拟的main.cpp源文件组成。有一些给定的常数值,比如cargo到达的频率、飞机的载重量、worker处理某些元素所花费的时间等(都是整数值)。我有必要在main.cpp中的几个函数中访问这些变量将main()函数上方的这些声明为constint似乎是合理的,有效地使它们成为全局的,例如constintkTotalTime=2000;constintkPlaneCapacity=25;intmain(){//...程序代码我知道在大多数情况

c++ - 是否可以通过 const 引用获取参数,同时禁止转换以便不传递临时变量?

有时我们喜欢通过引用获取一个大参数,并且如果可能的话还使引用成为const以表明它是一个输入参数。但是通过将引用设置为const,编译器允许自己转换类型错误的数据。这意味着它效率不高,但更令人担忧的是我认为我指的是原始数据;也许我会使用它的地址,但没有意识到我实际上使用的是临时地址。此代码中对bar的调用失败。这是可取的,因为引用的类型不正确。对bar_const的调用也是错误的类型,但它会自动编译。这对我来说是不可取的。#includeusingnamespacestd;intvi;voidfoo(int&){}voidbar(long&){}voidbar_const(constl

c++ - std::set 在运行时选择更少或更大的比较器

我重构了一些代码,发现除了集合的比较器是less之外,有两个地方可以用相同的代码编写。在一个地方和greater在另一个。像这样的东西:doubleMyClass::Function1(doubleval){std::set>s;//Dosomethingwiths}doubleMyClass::Function2(doubleval){std::set>s;//DothesamethingwithsasinFunction1}所以我想到了:doubleMyClass::GeneralFunction(doubleval,boolcondition){if(condition){//S

CentOS 8.5和CentOS8.4安装-解决Error setting up base repository问题

CentOS8内核采用了python3.6,而CentOS7还是python2.7,对于想要用GPU服务器进行机器学习方面的工作,还是用python3.6的内核更好些。CentOS8的新特性DNF成为了默认的软件包管理器,同时yum仍然是可用的使用网络管理器(nmcli和nmtui)进行网络配置,移除了网络脚本使用Podman进行容器管理引入了两个新的包仓库:BaseOS和AppStream使用Cockpit作为默认的系统管理工具默认使用Wayland作为显示服务器iptables将被nftables取代使用Linux内核4.18提供PHP7.2、Python3.6、Ansible2.8、VI

c++ - 将右值引用传递给 const 左值引用参数

我正在尝试理解C++11右值引用以及如何在我的代码中使用它们来实现最佳性能。假设我们有一个类A,它有一个指向大量动态分配数据的成员指针。此外,一个方法foo(constA&a)对类A的对象执行某些操作。当A的对象被传递给函数foo时,我想阻止A的复制构造函数被调用,因为在这种情况下,它将执行底层堆数据的深层复制。我测试了传递一个左值引用:Aa;foo(a);并传递一个右值引用:foo(A());在这两种情况下,复制构造函数都没有被调用。这是预期的还是由于我的编译器(AppleLLVM5.1)的一些优化?有没有这方面的规范? 最佳答案

c++ - vector - 当元素有 const 成员时交换两个元素

我有以下代码classa{public:constintaa;a(intaa):aa(aa){}};intmain(){std::vectorv;v.emplace_back(1);v.emplace_back(2);v.emplace_back(3);v.emplace_back(4);std::iter_swap(v.begin()+1,v.rbegin());system("pause");return0;}当我尝试交换vector的两个元素时出现错误。ErrorC2280'a&a::operator=(consta&)':attemptingtoreferenceadelete

c++ - 为什么 std::unique_ptr 没有 const get 方法?

我知道std::unique_ptr是这样的,可能不会改变以破坏向后兼容性,但我想知道是否有人有充分的理由说明规范的作者没有这样做'用看起来像这样的const变体重载get方法constT*get()const;遵循unique_ptr为const的意图。我最好的猜测是它试图镜像指针并像T*const而不是典型的类。作为后续问题,如果我想在类的const实例中以类似const的方式保存指针,我是否应该使用std::unique_ptr以外的其他东西来保存数据?更新在我的例子中,我想保护自己不在类本身中滥用指针。我正在编写一个const移动构造函数MyClass(constMyClass