非标准答案,都是个人理解
#include
#include
using std::cout;
using std::endl;
using std::cin;
using std::string;
int main()
{
string str1,str2;
getline(cin,str1);
getline(cin,str2);
if(str1==str2)
{
cout<<"equal"<=str2)
{
cout<
#include
#include
using std::cout;
using std::cin;
using std::string;
int main()
{
string sumS1, s;
while (getline(cin, s))
{
sumS1 += s;
cout << sumS1;
}
}
字符串确实能直接用加号连接,但是这种方式程序死循环很不爽。。。
#include
#include
using std::cout;
using std::endl;
using std::cin;
using std::string;
int main()
{
string s("some string");
for(auto &c:s)
{
c='x';
}
cout <
这个就简单了,循环s又是地址传递,直接赋值,只是这里一定注意单个字母的时候是单引号!
int i=0;
string s("some string");
while (i
又学了一个函数s.size是字符串长度的长度,小于字符串长度内都给他覆盖掉就可以了。
合法,s默认初始化为空字符串,打印第一个字符,也就是打印空格,我在机器上运行了确实合法
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
string s="hello,world,i an iron man.";
string c="";
for(auto i:s) //这里传进来是H所以auto声明i是char的形式。
{
if(!ispunct(i))
{
c+=i; //让它走向下一个,要不然循环完c里面就是n这个字母
}
}
cout<
#include
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
string s = "hello,world,i an iron man.";
string tmp(s); //拷贝s,把值赋给tmp
std::for_each(tmp.begin(), tmp.end(), [](char& c) { (ispunct(c) ? c = 0x0 : c = c); });
cout << tmp << endl;
}
//for_each也是循环遍历,c就是每一个tem遍历的单个元素,和上面的解法i一样,又是引用的形式可以直接修改。三目运算符,对tmp进行修改。结果一样。
这里还要说一下就是尽量不要直接修改s,包括写项目的时候,不能直接修改传入的数据,新建一个临时的修改就好了。
合法,c的类型是const char
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vector> ivec;
}
正确,第一个vector名字叫ivec里面每一个元素都是vector类型的。
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vector svec=ivec;
}
错误:ivec 是个什么东西,你没有定义啊
(c)这个没毛病,容器里边是string类型,里面放了10个null;
(a)这玩意就是个空对象
(b)这玩意里面包含十个元素,全都是零
(C)这玩意里面包含十个元素,全都是42
(d)放了一个元素10
(e)放了两个元素,一个10,一个42
(f)string类型,里面放了十个空格
(g)string 类型,里面放了是个”hi"
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vector v1;
int a;
while(cin>>a)
{
v1.push_back(a);
break;
}
for(auto b:v1)
{
cout<
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vector v1;
string a;
while(cin>>a)
{
v1.push_back(a);
break;
}
for(auto b:v1)
{
cout<
用书里的发现一直在循环里面,不断的往v1输入,加了break,就好了,就读入一组数据挺好。
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vectorv1;
cout<
#include
#include
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vector v1;
string s;
while (cin >> s)
{
v1.push_back(s);
}
for(auto &a:v1)
{
for(auto &b:a)
{
b=toupper(b);
}
}
for (auto i:v1)
{
cout<
要知道里面是两个形式,第一是vector里面的每一个string,第二是string里面的每一个字母。
不合法,会报段错误
std::vector i{42};
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
//std::vector i{42,42,42,42,42,42,42,42,42,42};
//std::vectori(10,42);
std::vectori{10,"42"};
for(auto a:i)
{
cout<
很明显是第二种赋值,尤其是对整数赋值,更加清晰明了。
#include
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
std::vector i_v = { 1,2,3,4,5,6 };
std::vector sum_v1;
for (decltype(i_v.size()) index = 0; index < i_v.size()-1; index++)
{
sum_v1.push_back(i_v[index] + i_v[index + 1]);
}
for (auto c : sum_v1)
{
cout << c<<" ";
}
cout << "\n";
}
#include
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
std::vector i_v = { 1,2,3,4,5,6 };
std::vector sum_v1;
for (decltype(i_v.size()) index = 0; index < i_v.size()-1; index++)
{
sum_v1.push_back(i_v[index] + i_v[i_v.size()-index -1]);
}
for (auto c : sum_v1)
{
cout << c<<" ";
}
cout << "\n";
}
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vectorv1(10,1);
cout << v1.size() << '\n';
auto a = v1.begin();
auto b = v1.end();
for (; a != b;)
{
cout << *a << endl;
++a;
}
#include
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vector s{"hello,world"};
for (auto a = s.begin(); a != s.end() && !a->empty(); ++a)
{
for (auto& c : *a)
{
c=toupper(c);
}
}
for (auto c : s)
{
cout << c << " ";
}
cout << endl;
}
#include
#include
#include
using std::endl;
using std::cout;
using std::cin;
using std::string;
int main()
{
std::vector i(10,1);
for (auto a = i.begin(); a != i.end(); ++a)
{
*a = *a * 2;
}
for (auto c : i)
{
cout << c << " ";
}
cout << endl;
}
#include
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
std::vector i = { 1,2,3,4,5,6 };
std::vector sum;
for (auto it = i.begin(); it != i.end()-1 ; ++it)
{
sum.push_back(*it + *(it + 1));
}
for (auto c : sum)
{
cout << c << " ";
}
cout << "\n";
}
#include
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
std::vector i = { 1,2,3,4,5,6 };
std::vector sum;
auto b=i.begin();
auto e=i.end()-1;
for (int n=0; b!=e-1; ++b)
{
sum.push_back(*b + *(e-n));
n++;
}
for (auto c : sum)
{
cout << c<<" ";
}
cout << "\n";
}
这里又引用了一个n为了是能够从end往前移动,一开始也想过直接减b但是老是报错,还是这样吧,这样能跑动。
因为end指向的是最后一个元素的最后一个位置,相加总位置就多了
数组里面[这里边可以是常量表达式]
a:不合法,Constexpr unsigned buf_size =1024;才行
c:返回值得也是Constexpr
d:范围小了,忘了\0了吧。
int 声明在全局,自动赋值0,声明在函数内部自动赋值随机
string应该是都赋值了空格。
对象固定实现,能够随机访问读取速度更快,申请空间固定更加贴近底层。
数组索引应当从0开始
#include
#include
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
int a[9];
for (size_t ix = 0; ix <= 10; ++ix)
{
a[ix] = ix;
}
for(auto c:a)
{
cout << c << " ";
}
return 0;
}
p1 往后移动 p2-p1个距离
当p2-p1的距离已经大于数组的总数,超出了范围就会出错。
#include
int main()
{
int a[]={1 ,2,3,4,5,67};
int *beg=std::begin(a);
int *last=std::end(a);
for(;beg!=last;++beg)
{
*beg=0;
}
for(auto c:a)
{
std::cout<
#include
int main()
{
int a1[]={1,2,3,4,5,67};
int b1[]={1,2,3,4,5,67};
int *beg1=std::begin(a1);
int *last1=std::end(a1);
int *beg2=std::begin(b1);
int *last2=std::end(b1);
while((beg1*beg2)
{
std::cout<<"a1>b1";
break;
}
else if(*beg1<*beg2)
{
std::cout<<"a1
遍历输出ca[],输出结果会出现乱码
存储地址,里面存放的数据是XXX ,变量名是XX,
指针的存储地址里存放的是指向XX的存储地址
根据变量名可以拿到里面存放的数据,也可以根据指针里面存放的存储地址去拿数据,但是你单单的存储地址相加,地址就改变了,可能指向了一个奇怪的地方。也可能是危险的,因为如果你权限很大的话,很有可能通过取地址把不应该修改的东西修改。
#include
#include
using std::cin;
using std::cout;
using std::endl;
int main()
{
std::string a="hello,world";
std::string b="hello,china";
if(a>b)
{
cout<<"a>b";
}
}
#include
#include
#include
using std::cin;
using std::cout;
using std::endl;
int main()
{
char a[]="hello,world";
char b[]="hello,china";
char c[50]="";
strcpy(c,a);
strcat(c," ");
strcat(c,b);
cout<
#include
using std::cout;
using std::endl;
using int_arry=int[4];
typedef int int_array[4];
int main()
{
int ia[3][4] = {
{1,2,3,4}
,{5,6,7,8}
,{9,10,11,12}};
for(auto &P: ia)
{
for(auto q:P)
{
cout<
#include
using std::cout;
using std::endl;
using int_arry=int[4];
typedef int int_array[4];
int main()
{
int ia[3][4] = {
{1,2,3,4}
,{5,6,7,8}
,{9,10,11,12}};
for (int_arry *p=ia;p!=std::end(ia);++p)
{
for(int *q=*p;q!=std::end(*p);++q)
{
cout<<*q<
#include
using std::cin;
using std::cout;
int main()
{
int a=3,b=2,c=1,d=0;
if(a>b && b>c && c>d)
cout<<"right";
}
#include
#include
using std::cin;
using std::cout;
int main()
{
std::vector vi={1,2,3,4,56,6,7,8,9};
for(auto &c:vi)
{
c=(c%2==0) ? c : c*2 ;
}
for(auto c:vi)
{
cout<