C++琐记一
1. 前言
没有系统地学过C++, 偶尔会把C++当作高级的C语言用下, 用下它的STL库, 有些很基础的东西都不知道。某课程的作业要求只能用C/C++写, 一动手发现全是错误, 故在此记录。
2. string类
string类经常使用, 平时还是用来连接下字符串比较多, 还有一些其他常用的方法:
substr(int, int)
str.substr(start,length) //返回str字符串start位置开始的长度为length的字符串,需要依次输出字符串中的字符时,可以变为str.substr(i,1),而不用str.at(i),因为str.at(i)返回值类型为char *
3. int转为string
直接用了toString(), 编译报错才想起来是C++不是Java啊……搜了下又不太想用itoa和sprintf, 就用了stringstream类
#include <sstream>
stringstream stream;
string str;
stream << v[i][j]; //注意sstream输入是<<而不是iostream的>>
stream >> str;
4. queue模板类
顾名思义, queue就是队列, 这个类实现了队列的操作, 但是其pop()方法竟然不返回值, 只是删除队首元素, 要获取队首元素, 需要使用front()方法:
queue<string> que;
string head = que.front();
que.pop();
5. map类
提供了一一对应的关系, 实例化一个map类后, 添加了新元素, 想要查找其中的key, 利用了其find()方法:
map<string,int> myMap;
myMap["test"] = 1;
if( myMap.find("test") == myMap.end() ) {
}
更加常用的方法是count.
6. this的使用
还是受Java影响, 如下:
class A {
public:
A(int a);
private:
int a;
};
A::A(int a) {
this.a = a; //错误
cout << this.a << endl;
}
区别在于C++中的this是指针, 而Java没有指针概念, 都是引用对象, 所以在C++中其实应该如此:
class A {
public:
A(int a);
private:
int a;
};
A::A(int a) {
(*this).a = a; //or this->a = a;
cout << (*this).a << endl;
}
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
GitalkLivere