三元表达式:
carry += i < a.size() ? (a.at(i) == '1') : 0;
?前的bool语句为true则表达式为:前的数据,否则为冒号后的数据
字符串定位:
string.at(0)获取下标为0的字符。
//排序
int nums[5];
sort(nums.begin(),nums.end());
//翻转
reverse(nums.begin(),nums.end());
哈希map:
unordered_map<int,int> m;
m.count(nums)只有0和1.
模板分为函数模板和类模板
函数模板
template<typename T>//T是通用数据类型//typename可以替换成class
T a=1;//使用模板必须确定出T的数据类型
swap(a,b)
或swap<int>(a,b);
定义二维数组:vector<vector<int>> e(r, vector<int>(c));
类模板
template<class NameType,class AgeType>
class Person{
public:
Person(NameType name,AgeType age){
this->m_Name=name;
this->m_Age=age;
}
NameType name;
AgeType age;
}
set容器:集合容器:所有元素会在插入时自动排序
set容器不允许有重复的元素;而multiset容器可以有重复的元素
命名空间namespace
namespace A
{
void fun(){
cout<<"A空间下的函数"<<endl;
}
namespace B{
void func(){
cout<<"B空间下的函数"<<endl;
}
}
}
作用域符号::
using namespace A::B;//可以直接使用B中的函数
那么A::fun()就表示类A中的成员函数fun()
Line xx: Char 36: runtime error: member access within null pointer of type 'TreeNode' (solution.cpp):在遍历树时一定要判断是否非空。
C++11中 拥有了类似的功能:auto 类型推导。
vector<int> a(10, 1); //声明一个初始大小为10且初始值都为1的向量
vector< vector<int> > v(m, vector<int>(n) );
定义了一个vector容器,元素类型为vector<int>,初始化为包含m个vector<int>对象,每个对象都是一个新创立的vector<int>对象的拷贝,而这个新创立的vector<int>对象被初始化为包含n个0。
pair对组:
pair<type,type> p(value1,value2);