cpp: pointer
指针读二维数组
1 2 3 4 5 6 7 8 9 | int arr[3][4] = { {14,2,3,14},{14,5,6,7} ,{18,9,10,11} }; int * p; p = arr[0]; for ( int i = 0; i < sizeof (arr) / sizeof ( int ); i++) { cout << "\t" << &arr[i] << endl; //p = arr[i]; cout << *p++ << endl; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | int * t; t = &arr[0][0]; for ( int kk = 0; kk < 3; kk++) { for ( int Column = 0; Column < ( sizeof (arr[kk]) / sizeof (arr[0][kk])); Column++) { cout << *t++ << endl; } } int (*pp)[4]; //Column 4 int i, j; for (i = 0; i < 3; i++) { pp = &arr[i]; cout << "Row" << i << ":" ; for (j = 0; j < 4; j++) cout << "\t" << *(*pp + j); cout << endl; } std::vector< int > v {3, -4, 2, -8, 15, 267}; auto print = []( const int & n) { std::cout << n << ' ' ; }; std::cout << "before:\t" ; std::for_each(v.cbegin(), v.cend(), print); std::cout << '\n' ; // increment elements in-place std::for_each(v.begin(), v.end(), []( int & n) { n++; }); std::cout << "after:\t" ; std::for_each(v.cbegin(), v.cend(), print); std::cout << '\n' ; struct Sum { void operator()( int n) { sum += n; } int sum{ 0 }; }; // invoke Sum::operator() for each element Sum s = std::for_each(v.cbegin(), v.cend(), Sum()); std::cout << "sum:\t" << s.sum << '\n' ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /// <summary> /// 整数转二进制 /// </summary> /// <param name="n">整数</param> /// <param name="len">显示几位,如5位</param> /// <returns></returns> string GeovinDu::DecimalToBinary( int n, int len) { string ss = "" ; int binaryNumber[100], num = n; int i = 0; while (n > 0) { binaryNumber[i] = n % 2; n = n / 2; i++; } //cout << "Binary form of " << num << " is "; std::string new_string = "" ; for ( int j = i - 1; j >= 0; j--) ss = ss + to_string(binaryNumber[j]); if (ss.length() < len) new_string = std::string(len - ss.length(), '0' ) + ss; else new_string = ss; return new_string; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | /// <summary> /// 获取二进制字符串含“1”字符占位的序号集合(从零开始的连续序号) /// </summary> /// <param name="str">二进制字符串集合</param> /// <param name="len">第几位</param> /// <returns></returns> vector< int > GeovinDu::getOneInt(vector <string> str, int len) { vector< int > nn; int k = 0; for (string ss : str) { if (ss.substr(len, 1) == "1" ) { nn.push_back(k); } k++; } return nn; } /// <summary> /// 读心术 /// </summary> void GeovinDu::displayReadHeart() { int number = 0; char input; cout << "***" << endl; int num[32]; for ( int i=0;i<=31;i++) { num[i] = i; } vector<string> strnum; for ( int i = 0; i <= 31; i++) { string ssd = bitset<5>(num[i]).to_string(); strnum.push_back(DecimalToBinary(num[i],5)); } int i = 0; for (string s : strnum) { cout <<i<< ":" << s << endl; i++; } vector< int > nn; nn = getOneInt(strnum, 0); string str = "" ; for ( int d : nn) { // cout << d << endl; str = "" +str + to_string(d)+ " " ; } cout << "猜出心中所想数" << endl; cout << str << endl; cout << "请你选好之后,输入Y即可正式进入猜数游戏" << endl; cin >> input; if (input == 'Y' || input == 'y' ) { number = 16; } nn = getOneInt(strnum, 1); str = "" ; for ( int d : nn) { // cout << d << endl; str = "" + str + to_string(d) + " " ; } cout << str << endl; cout << "1请你回答是否有猜中数YES和NO,输入Y或N即可" << endl; cin >> input; if (input == 'Y' || input == 'y' ) { number += 8; } nn = getOneInt(strnum, 2); str = "" ; for ( int d : nn) { // cout << d << endl; str = "" + str + to_string(d) + " " ; } cout << str << endl; cout << "2请你回答是否有猜中数YES和NO,输入Y或N即可" << endl; cin >> input; if (input == 'Y' || input == 'y' ) { number += 4; } nn = getOneInt(strnum, 3); str = "" ; for ( int d : nn) { // cout << d << endl; str = "" + str + to_string(d) + " " ; } cout << str << endl; cout << "3请你回答是否有猜中数YES和NO,输入Y或N即可" << endl; cin >> input; if (input == 'Y' || input == 'y' ) { number += 2; } nn = getOneInt(strnum, 4); str = "" ; for ( int d : nn) { // cout << d << endl; str = "" + str + to_string(d) + " " ; } cout << str << endl; cout << "4请你回答是否有猜中数YES和NO,输入Y或N即可" << endl; cin >> input; if (input == 'Y' || input == 'y' ) { number += 1; } cout << "猜中你想的数:" << number << endl; } |
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
分类:
Cpp programming
标签:
数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!