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(涂聚文)
浙公网安备 33010602011771号