cpp: pointer
指针读二维数组
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; }
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';
/// <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; }
/// <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(涂聚文)