STL容器
vector:
1.倒序遍历:
for(auto it=ans.end()-1;it!=ans.begin()-1;it--)//由于左闭右开
{
cout<<*it;
}
for(auto it=ans.rbegin();it!=ans.rend();it++)//加r表示逆向遍历
{
cout<<*it;
}
2.返回数组中最大元素:
*max_element(maxn.begin(),maxn.end());
3.二维数组的遍历
for(auto it1=grid.begin();it1!=grid.end();it1++)
{
for(auto it2=it1->begin();it2!=it1->end();it2++)
{
cout<<*it2;
}
}
return ans;
map:
1.遍历方法:
unordered_map<KeyType, ValueType> myMap;
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
// it->first 是键,it->second 是值
// 使用 (*it).first 和 (*it).second 也是可以的
}
for (const auto& pair : myMap) {
// pair.first 是键,pair.second 是值
}
2.查找键:
map<int,int> mp;
auto it=mp.find(key); //查找的是值等于key的键对应的迭代器
//若要查找值,只能遍历键
stack:
stack<int> s; //定义一个整数型的栈
s.push(5); //将5压入栈
s.empty(); //判断空
s.size(); //计算大小
int x=s.top(): //访问栈顶
s.pop(); //出栈
Queue:
-
push()
: 将元素val
添加到队列的末尾。 -
pop()
: 删除队列的第一个元素(即队首元素)。 -
front()
: 返回队列的第一个元素的引用。如果队列为空,则行为未定义。 -
back()
: 返回队列的最后一个元素的引用。如果队列为空,则行为未定义。 -
empty()
: 检查队列是否为空。如果队列为空,则返回true
,否则返回false
。 -
size()
: 返回队列中的元素数量。
基本功能:
1.四舍五入,精确到几位:
round函数是将一个小数四舍五入取整,向下取整将round改为int,int自动将小数抹去,向上取整再+1即可。
double dRawData = 3.14526;
double dValidData1 = round(dRawData * 100) / 100; //小数点保留几位,就乘几个0
double dValidData2 = int(dRawData * 100) / 100; //向下取整
double dValidData3 = (int(dRawData * 100)+1) / 100; //向上取整
输出为:
dRawData=3.14526
dValidData1=3.15
dValidData2=3.14
dValidData3=3.15
2.类型转换:
//字符串转整数:
string str = "123";
int num = stoi(str);
//整数转字符串:
int num = 123;
string str = to_string(num);
//字符串转小数
string str = "3.14";
float num = stof(str);
//小数转字符串
float num = 3.14;
string str = to_string(num);
文件读取方法:
1.c++读取风格:
读取文件:
ifstream inputfile("file.txt");
if (!inputfile.is_open()) {
std::cerr << "Failed to open file.txt" << std::endl;
return 1;
}
char c;
while (inputfile.get(c)) {
std::cout << c;
}
inputfile.close();
方法扩充:
ifstream inputfile("file.txt");
//等价于:
//ifstream inputfile;
//inputfile.open("file.txt");
char ch;
inputfile.get(ch);
//等价于:
//char ch=inputfile.get();
//其他读取文件函数:
//读取一行,读取失败返回-1,可用while(getline())
string line;
getline(inputfile, line);
//读取指定字节大小的数据
int buffer_size;
char buffer[buffer_size];
inputfile.read(buffer, buffer_size);
写文件:
ofstream outputFile("output.txt"); // 创建输出文件流对象并打开文件
//默认为写入模式,原有内容会被覆盖,追加模式和写入模式:
//ofstream outputFile("output.txt",ios::app);
//ofstream outputFile("output.txt",ios::trunc);
if (!outputFile.is_open()) {
cerr << "Failed to open output.txt" <<endl;
return 1;
}
outputFile << "Hello, World!" <<endl; // 向文件写入数据,endl会自动换行,下次输入在下一行,不加则可以直接追加
outputFile.close();
2.main()函数的参数:
int main(int argc, char *argv[])
int main(int argc, char **argv)
其中 argc
表示命令行参数的数量(包括程序名本身),argv
是一个指向指针数组的指针,其中每个指针指向一个表示命令行参数的 C 字符串。argv[0]
是程序名,argv[1]
到 argv[argc-1]
是命令行参数。
例如,如果运行程序时输入了命令 ./myprogram arg1 arg2
,那么 argc
的值将为 3,argv[0]
的值将是字符串 "./myprogram",argv[1]
的值将是字符串 "arg1",argv[2]
的值将是字符串 "arg2"。
带参数的 main()
函数常用于接受用户输入的命令行参数,以便根据输入的参数执行不同的操作或者控制程序的行为。
注意事项:
1.对字符串的索引返回结果是字符而不是字符串,下述代码会导致无法插入。
vector<string> ans;
string a="abc";
ans.push_back(a[0]);
cout<<ans[0];
//用法:string(size_t n, char c):使用字符 c 初始化一个长度为 n 的字符串。
ans.push_back(string(1, s[0]));
2.想拼接,半天查不出问题
for(int i=0;i<a1;i++) ans+="B";
for(int i=0;i<a1;i++) ans+"B";