1
何时使用引用参数
使用引用参数的主要原因有两个:
注意,只有变量才能按引用传递。如果尝试将非变量实参(例如常数、常量或表达式)传递到引用形参中,将导致错误。
- 程序员能够修改调用函数中的数据对象。
- 通过传递引用而不是整个数据对象,可以提高程序的运行速度。
只使用传递过来的值,而不对值进行修改 | 需要修改传递过来的值 | |
---|---|---|
内置数据类型 | 按值传递(小型结构) | 指针传递 |
数组 | 指针传递 | 指针传递 |
结构 | 指针或引用(较大的结构) | 指针或引用 |
类、对象 | 指针引用传递 | 引用传递 |
2
指针的引用就是指针的别名
使用这个别名就可以对指针进行全局修改
3
反转字符串用vector和set都可以
迭代器用rbegin rend
#include<iostream>
#include<set>
#include<vector>
using namespace std;
int main(){
string str;
cin>>str;
vector<char> vector;
for(auto iter=str.rbegin();iter!=str.rend();iter++)//rbegin rend是从末尾到首部的遍历
{
vector.push_back(*iter);
cout<<*iter;
}
return 0;
}
4需要求非重复元素的时候使用set
在用set.count(*iter)返回该元素出现次数之后用continue跳出当前循环执行下一次循环
#include<iostream>
#include<set>
using namespace std;
int main(){
set<char>set;
string str;
cin>>str;
int count=0;
for(auto iter=str.begin();iter!=str.end();iter++){
if(set.count(*iter))
continue;
count++;
set.insert(*iter);
}
cout<<count<<endl;
return 0;
//编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
//例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
}
5二进制转换
//方法1
while(n){
m+=n%2; //不断取余再除以2
n/=2;
}
//方法2
#include<iostream>
#include<bitset>
using namespace std;
int main(){
int n;
cin>>n;
bitset<32> b(n);//b是一个32位长的2进制数
cout<<b.count();
return 0;
}
| | |
|–|–|–|
| | |