板凳——————————————————c++(15)

//professional c++ 4th edition p 224 2020年05月07日 05时10分26秒
#include
#include

std::string getString(){
return “Hello World!”;}

class MyClass{ // p225
public:
MyClass(int& ref) : mRef(ref) { }
private:
int& mRef;
};

void swap(int& first, int& second){
int temp = first;
first = second;
second = temp;
}
//
void handleMessage(std::string&& message){
std::cout << "handleMessage with lvalue reference: " << std::endl;
}

void refcall(int& t) { ++t;}
int main(){
const std::string& string2 = getString();
int x = 3, y = 4;
//引用变量在创建时必须初始化
//xRef 就是x的另一个名称, 使用xRef就是使用x的当前值, 对xRef赋值会改变x的值
int& xRef = x;
xRef = y;//Changes value of x to 4. Doesn’t make xRef refer to y.
//y的地址是一个指针, xRef被声明为一个指向int值的引用, 不是指向指针的引用
//xRef = &y; DOES NOT COMPILE!

int  z = 5;
int & zRef = z;
zRef = xRef; //Assigns values, not references
//没有改变zRef, 只是将z的值设置为3, 因为xRef 指向x, x的值是3

int* intP;
//ptrRef 是一个指向intP的引用, intP是一个指向int值的指针
int*& ptrRef = intP;
ptrRef = new int;
//修改ptrRef 会更改intP
*ptrRef = 5;

//对引用 取地址的结果 与 对被引用变量 取地址的结果相同
int* xPtr = &xRef;//Address of a reference is pointer to value
*xPtr = 100;
//通过取x引用的地址, 是xPtr指向x. 将*xPtr赋值为100, x的值也变为100

int i = 123;
MyClass m(i);

swap(x, y);

//对指针解除引用, 将指针"转换"为引用 p226
int *xp = &x, *yp = &y;
swap(*xp, *yp);
//要支持此类调用, 需要一个接受右值引用的版本 
handleMessage("Hello World");
std::string a = "Hello ";
std::string b = "World";
handleMessage(a + b);

// //试图执行时会崩溃 显示 段错误 p227
// int* ptr = (int*)8;
// refcall(ptr);
return 0;
}
/

wannian07@wannian07-PC:~$ g++ -std=c++17 -o c17 c17.cpp
wannian07@wannian07-PC:~$ ./c17
handleMessage with lvalue reference:
handleMessage with lvalue reference:

//professional c++ 4th edition p 228
#include

void separateOddsAndEvens(const int arr[], size_t size, int** odds,
size_t* numOdds, int** evens, size_t* numEvens){
*numOdds = *numEvens = 0;
for(size_t i = 0; i < size; ++i){
if(arr[i] % 2 == 1){
++(*numOdds);
} else{
++(*numEvens);
}
}

 *odds = new int[*numOdds];
 *evens = new int[*numEvens];
 
 size_t oddsPos = 0, evensPos = 0;
 for(size_t i = 0; i < size; ++i){
   if(arr[i] % 2 == 1){
      (*odds)[oddsPos++] = arr[i];
   } else{
      (*evens)[evensPos++] = arr[i];
   }
   }

}

int main(){
int unSplit[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int* oddNums = nullptr;
int* evenNums = nullptr;
size_t numOdds = 0, numEvens = 0;
separateOddsAndEvens(unSplit, std::size(unSplit),
&oddNums, &numOdds, &evenNums, &numEvens);

delete[] oddNums; oddNums = nullptr;
delete[] evenNums; evenNums = nullptr;
return 0;

}
*/
//professional c++ 4th edition p 229
#include
#include
#include
// void separateOddsAndEvens(const std::vector& arr,
// std::vector& odds, std::vector& evens){
// for(int i : arr){
// if(i % 2 == 1){
// odds.push_back(i);
// }else{
// evens.push_back(i);
// }
// }
// }

std::pair<std::vector, std::vector>
separateOddsAndEvens(const std::vector& arr){
std::vector odds, evens;
for(int i : arr){
if(i % 2 == 1){
odds.push_back(i);
}else{
evens.push_back(i);
}
}
return make_pair(odds, evens);
}

int main(){
std::vector vecUnSplit {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// std::vector odds, evens;
// separateOddsAndEvens(vecUnSplit, odds, evens);
auto[odds, evens] =separateOddsAndEvens(vecUnSplit);
return 0;
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值