c++ベース(1)
7960 ワード
c++primerを読み直し、詳細を学習します.
[cpp] view plain copy print ?
#include
using namespace std;
int main() {
int sum=0, value; while(cin>>value)
sum+=value; cout<<"Sum is:"<
return 0; }
8行目、while条件テスト入力オペレータの戻り結果、テストstd::cin.ファイル終端(end-of-file)または無効な入力に遭遇した場合、整数以外の値を読み込んだ場合、失敗します.
[cpp] view plain copy print ?
#include #include
using namespace std;
int main()
{ vector ivec;
for(vector::size_type ix=0; ix!=10;++ix) {
ivec.push_back(ix); }
for(vector::size_type ix=0; ix!=ivec.size();++ix) {
cout< }
return 0; }
vectorの簡単な使い方.
[cpp] view plain copy print ?
#include #include
using namespace std;
int main()
{ vector ivec;
for(vector::size_type ix=0; ix!=10;++ix) {
ivec.push_back(ix); }
for(vector::iterator iter=ivec.begin(); iter!=ivec.end();++iter) {
cout<<*iter< }
return 0; }
反復器iteratorの使用.
[cpp] view plain copy print ?
#include
using namespace std;
int main() {
const size_t array_size = 10; int ia[array_size];
for(size_t ix=0; ix!=array_size;++ix)
ia[ix]=ix; for(size_t ix=0; ix!=array_size;++ix)
cout< return 0;
}
配列の下に表示される正しいタイプはsize_です.t.
[cpp] view plain copy print ?
#include
using namespace std;
int main() {
int ival = 1024; int *piv = &ival;
int **ppiv = ϖ cout<
return 0; }
ポインタを指すポインタ.
[cpp] view plain copy print ?
const double a = 3.14; double *pa = &a;//error, pa is a plain pointer
const double *pb = &a;//ok, a pointer to const//constオブジェクトを指すポインタで、その指すconst値をポインタで変更することは許されません.
//しかし、他のオブジェクトを指すことができます.
int errNumb = 0; int *const curErr = &errNumb;
//constポインタ、constポインタの値は変更できません.curErrを他のオブジェクトに向けることはできません.
[cpp] view plain copy print ?
//動的配列の作成 int *pia = new int[10];//arrays of 10 uninitialized ints
int *pia2 = new int[10]();//arrays of 10 initialized ints, all 0
[cpp] view plain copy print ?
//シフトオペレータ中優先度://優先度は算術演算子より低いが、リレーショナル演算子、付与オペレータ、条件オペレータよりも優先度が高い.
cout<<42+10;//ok cout<<(10<42);//ok
cout<<10<42;//error
[cpp] view plain copy print ?
#include using namespace std;
void reset(int *ip)
{ *ip = 0;//IPが指すint値 を変更する
//ip = 0;//IPの局所変数のみを変更し、外部に影響を及ぼさない }
int main()
{ int i = 42;
int *p = &i; cout<<"i:"<<*p<
reset(p); cout<<"i:"<<*p<
return 0;
}
結果:
i:42
i:0
[cpp] view plain copy print ?
#include using namespace std;
void reset(int *ip)
{//*ip = 0;//IPが指すint値 を変更する
ip = 0;//IPの局所変数のみを変更し、外部に影響を及ぼさない }
int main()
{ int i = 42;
int *p = &i; cout<<"i:"<<*p<
reset(p); cout<<"i:"<<*p<
return 0;
}
結果:
i:42
i:42
[cpp] view plain copy print ?
#include
using namespace std;
int main()
int sum=0, value;
sum+=value;
return 0;
#include <iostream>
using namespace std;
int main()
{
int sum=0, value;
while(cin>>value)
sum+=value;
cout<<"Sum is:"<<sum<<endl;
return 0;
}
8行目、while条件テスト入力オペレータの戻り結果、テストstd::cin.ファイル終端(end-of-file)または無効な入力に遭遇した場合、整数以外の値を読み込んだ場合、失敗します.
[cpp] view plain copy print ?
#include
{
for(vector
ivec.push_back(ix);
for(vector
cout<
return 0;
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec;
for(vector<int>::size_type ix=0; ix!=10; ++ix)
{
ivec.push_back(ix);
}
for(vector<int>::size_type ix=0; ix!=ivec.size(); ++ix)
{
cout<<ivec[ix]<<endl;
}
return 0;
}
vectorの簡単な使い方.
[cpp] view plain copy print ?
#include
{
for(vector
ivec.push_back(ix);
for(vector
cout<<*iter<
return 0;
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec;
for(vector<int>::size_type ix=0; ix!=10; ++ix)
{
ivec.push_back(ix);
}
for(vector<int>::iterator iter=ivec.begin(); iter!=ivec.end(); ++iter)
{
cout<<*iter<<endl;
}
return 0;
}
反復器iteratorの使用.
[cpp] view plain copy print ?
#include
using namespace std;
int main()
const size_t array_size = 10;
ia[ix]=ix;
cout<
}
#include <iostream>
using namespace std;
int main()
{
const size_t array_size = 10;
int ia[array_size];
for(size_t ix=0; ix!=array_size; ++ix)
ia[ix]=ix;
for(size_t ix=0; ix!=array_size; ++ix)
cout<<ia[ix]<<endl;
return 0;
}
配列の下に表示される正しいタイプはsize_です.t.
[cpp] view plain copy print ?
#include
using namespace std;
int main()
int ival = 1024;
int **ppiv = ϖ
return 0;
#include <iostream>
using namespace std;
int main()
{
int ival = 1024;
int *piv = &ival;
int **ppiv = ϖ
cout<<ival<<endl<<*piv<<endl<<**ppiv<<endl;
return 0;
}
ポインタを指すポインタ.
[cpp] view plain copy print ?
const double a = 3.14;
const double *pb = &a;//ok, a pointer to const
//しかし、他のオブジェクトを指すことができます.
int errNumb = 0;
//constポインタ、constポインタの値は変更できません.curErrを他のオブジェクトに向けることはできません.
const double a = 3.14;
double *pa = &a; //error, pa is a plain pointer
const double *pb = &a;//ok, a pointer to const
// const , const 。
// 。
int errNumb = 0;
int *const curErr = &errNumb;
//const ,const , curErr 。
[cpp] view plain copy print ?
//動的配列の作成
int *pia2 = new int[10]();//arrays of 10 initialized ints, all 0
//
int *pia = new int[10];//arrays of 10 uninitialized ints
int *pia2 = new int[10]();//arrays of 10 initialized ints, all 0
[cpp] view plain copy print ?
//シフトオペレータ中優先度:
cout<<42+10;//ok
cout<<10<42;//error
// :
// , 、 。
cout<<42+10;//ok
cout<<(10<42);//ok
cout<<10<42;//error
[cpp] view plain copy print ?
#include
{
//ip = 0;//IPの局所変数のみを変更し、外部に影響を及ぼさない
{
int *p = &i;
reset(p);
}
#include <iostream>
using namespace std;
void reset(int *ip)
{
*ip = 0;// ip int
//ip = 0;// ip ,
}
int main()
{
int i = 42;
int *p = &i;
cout<<"i:"<<*p<<endl;
reset(p);
cout<<"i:"<<*p<<endl;
return 0;
}
結果:
i:42
i:0
[cpp] view plain copy print ?
#include
{
ip = 0;//IPの局所変数のみを変更し、外部に影響を及ぼさない
{
int *p = &i;
reset(p);
}
#include <iostream>
using namespace std;
void reset(int *ip)
{
//*ip = 0;// ip int
ip = 0;// ip ,
}
int main()
{
int i = 42;
int *p = &i;
cout<<"i:"<<*p<<endl;
reset(p);
cout<<"i:"<<*p<<endl;
return 0;
}
結果:
i:42
i:42