
C++基础语法测试
zhjixi495
这个作者很懒,什么都没留下…
展开
-
map和vector的迭代器失效问题
当删除一个STL容器(比如map, vector)中的某个元素时, 会引起迭代器失效, 所以, 我们务必提高警惕。题目: 删除map<int, int>中value为5的倍数的元素。 该题看起来很自然很简单, 实则有迭代器失效的陷阱。如果对迭代器失效问题一无所知, 则很容易写出如下的错误代码:#include <iostream>#include &...转载 2020-02-28 09:17:52 · 805 阅读 · 0 评论 -
类对象大小测试2
#include <iostream>using namespace std;/*创建对象A创建对象BA创建对象A创建对象BA销毁对象BA销毁对象A销毁对象BA销毁对象A创建对象C创建对象BC创建对象C创建对象BCline=173 fun_bc1line=178 fun_bc2销毁对象BC销毁对象Cline=173 fun_bc1l...原创 2020-02-27 10:10:42 · 304 阅读 · 0 评论 -
为什么很多人禁用拷贝(复制)构造函数
关于C++的拷贝构造函数,很多的建议是直接禁用。为什么大家会这么建议呢?没有拷贝构 造函数会有什么限制呢?如何禁用拷贝构造呢?这篇文章对这些问题做一个简单的总结。这里讨论的问题以拷贝构造函数为例子,但是通常赋值操作符是通过拷贝构造函数来实现 的( copy-and-swap 技术,详见《Exceptional C++》一书),所以这里讨论也适用于赋 值操作符,通常来说禁用拷贝构造函数的同时也会...转载 2019-11-22 11:06:40 · 4474 阅读 · 1 评论 -
测试string类作栈内对象返回时其gcc和VC6.0编译器的处理方式,以及测试move操作
/*1.gcc编译运行结果[root@VM_0_7_centos test]# g++ --std=c++17 mystring.cpp [root@VM_0_7_centos test]# ./a.out 1String ctor: nullString ctor: twoString ctor: threeString copy ctor: twoa.c_str() = ...原创 2019-11-07 14:41:37 · 160 阅读 · 0 评论 -
c++小技巧(三)更好的类型转换implicit_cast和down_cast
在C++中有四种类型转换1.static_cast:这个是最常用的类型转换,凡是C++隐式执行的类型转换都可以用static_cast显式完成。在隐式转换时有时编译器会有警告信息,但是显示转换(使用static_cast)就不会有。static_cast还会进行一些基础的类型检查,能在编译期发现错误。float f=0;int a=(int)f; //强行转换,可能会有警告int a=...转载 2019-11-05 20:40:40 · 504 阅读 · 0 评论 -
C++ set 容器使用
/*g++ set.cc --std=c++17 set 容器使用set 内部是使用红黑树实现的,是一种平衡二叉树,所以对其插入\查找效率是非常高的,其时间复杂度是log2(n)set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元...原创 2019-11-05 16:40:10 · 266 阅读 · 0 评论 -
C++函数中返回的对象是否进行优化运行结果
#include <iostream>using namespace std;struct Foo { Foo() { cout << "Foo ctor" << endl; } Foo(const Foo&) { cout << "Foo copy ctor" << endl; } v...原创 2019-11-05 14:03:46 · 237 阅读 · 0 评论 -
C++ 模板使用简单示例
#include <iostream>using namespace std;//函数模板template<class T>void swap1(T &a, T &b){ T temp = a; a = b; b = temp;}//函数模板template <typename T>T const...原创 2019-10-29 10:21:36 · 178 阅读 · 0 评论 -
一些关键字或模板
一、dynamic_cast使用dynamic_cast一个继承层次内进行转化的指针/引用。dynamic_cast依赖于RTTI信息,在转换时,dynamic_cast会检查转换的source对象是否真的可以转换成target类型,这种检查不是语法上的,而是真实情况的检查。被转换的类型必须是多态(即有虚函数)。使用这个会影响运行效率,一般情况下也是不使用的。能在编译时解决掉的问题没必要留到运...原创 2019-10-28 17:51:06 · 187 阅读 · 0 评论 -
c++ cout 输出重载测试
#include <iostream>#include <vector>using namespace std;ostream& operator<<(ostream &out,vector<int>&src){ for (vector<int>::iterator it = src.be...原创 2019-10-28 10:27:50 · 636 阅读 · 0 评论 -
类大小测试
#include <iostream>using namespace std;/*测试结论:1.子类对象大小=当前子类成员函数大小+父类对象大小+有虚函数的话还要加4(这个是实现动态虚表的指针)2.子类对象大小3.若设置的类可以被其他类可继承,在析构函数前应该加virtual基类的析构函数加了virtual就可以动态绑定派生类的析构函数,这样的话,在执行多态后删除...原创 2019-10-25 10:39:23 · 180 阅读 · 0 评论 -
C++防函数测试
#include <iostream>#include <deque>#include <vector>#include <algorithm>#include <functional>#include <string>#include <sstream>#include <iostream&...原创 2019-10-27 10:15:14 · 279 阅读 · 0 评论