C++解惑 引用等

本文探讨了如何在编程中合理使用引用参数以修改变量,以及指针在数据传递中的作用。涉及内容包括:按引用传递的必要性、不同类型数据(内置、数组、结构、类)的传递方式,以及指针别名在字符串反转和集合操作中的应用。还介绍了如何利用set处理非重复元素和二进制转换的两种方法。
摘要由CSDN通过智能技术生成

1
何时使用引用参数
使用引用参数的主要原因有两个:
注意,只有变量才能按引用传递。如果尝试将非变量实参(例如常数、常量或表达式)传递到引用形参中,将导致错误。

  1. 程序员能够修改调用函数中的数据对象。
  2. 通过传递引用而不是整个数据对象,可以提高程序的运行速度。
只使用传递过来的值,而不对值进行修改需要修改传递过来的值
内置数据类型按值传递(小型结构)指针传递
数组指针传递指针传递
结构指针或引用(较大的结构)指针或引用
类、对象指针引用传递引用传递

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;
}

| | |
|–|–|–|
| | |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值