C++STL 배열 Array (C++11)
4395 단어 C++STL
#include
#include
#include//qsort bsearch NULL
#include
using namespace std;
const int SIZE = 100000;//
int main()
{
// long , SIZE
arrayarr;
clock_t start = clock();//ms
for (int i = 0; i < SIZE; i++)
{
arr[i] = rand()%100000;
}
cout << " 100000 : " << (clock() - start) << endl;
cout << "array.size()" << arr.size() << endl;
cout << "array.front()" << arr.front() << endl;
cout << "array.back()" << arr.back() << endl;
cout << "array.data()" << arr.data() << endl;//
//qsort();
//bsearch();
return 0;
}
:
100000 : 16
array.size()100000
array.front()41
array.back()1629
array.data()0069E2BC
. . .
, run
2. 수조의 하부 구조 분석
template
class array
{ // fixed size array of values
public:
enum {_EEN_SIZE = _Size}; // helper for expression evaluator
typedef array<_ty _size=""> _Myt;
typedef _Ty value_type;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef _Ty *pointer;
typedef const _Ty *const_pointer;
typedef _Ty& reference;
typedef const _Ty& const_reference;
//
typedef _Array_iterator<_ty _size=""> iterator;
typedef _Array_const_iterator<_ty _size=""> const_iterator;
//
typedef _STD reverse_iterator reverse_iterator;
typedef _STD reverse_iterator const_reverse_iterator;
void assign(const _Ty& _Value){}
void fill(const _Ty& _Value) {}
void swap(_Myt& _Other)_NOEXCEPT_OP(_NOEXCEPT_OP(_Swap_adl(_Elems[0], _Elems[0]))){ }
iterator begin() _NOEXCEPT{}
const_iterator begin() const _NOEXCEPT{}
iterator end() _NOEXCEPT {}
size_type size() const _NOEXCEPT{}
bool empty() const _NOEXCEPT{}
const_reference at(size_type _Pos) const{}
reference operator[](size_type _Pos){}
const_reference operator[](size_type _Pos) const{}
reference front(){ }
const_reference front() const{}
reference back(){}
const_reference back() const{}
_Ty *data() _NOEXCEPT{}
const _Ty *data() const _NOEXCEPT{}
//
_Ty _Elems[_Size == 0 ? 1 : _Size];
};
여기에는 제 VS 2013의 Array 부분인 SourceCode가 나열되어 있는데 주로 세 가지 부분입니다.
1. array ;
2. ;
3. : _Ty _Elems[_Size == 0 ? 1 : _Size];
, 0 , 1
서로 다른 컴파일러의 실현에 약간의 차이가 있을 수 있지만 기본적인 사고방식과 방법의 사용은 일치한다. 그렇지 않으면 표준 템플릿 라이브러리라고 부른다. 표준이란 모든 플랫폼이 따라야 하기 때문에 우리가 STL을 이해하는 데 영향을 주지 않는다는 뜻이다.
위 프레젠테이션 코드에 사용된 몇 가지 방법을 살펴보겠습니다.
//typedef _Ty& reference;
reference front()//
{
return (_Elems[0]);
}
reference back()//
{
return (_Elems[_Size - 1]);
}
_Ty *data() _NOEXCEPT//
{
return (_Elems);
}
//typedef size_t size_type;
size_type size() const _NOEXCEPT// size
{
return (_Size);
}
,array ,
그러나 우리는 특징이 아닌 특징을 발견할 수 있다.
array , ....
array , , C
3. 마지막으로 공식 문서를 보는 예:
#include
#include
#include
#include
#include
int main()
{
// construction uses aggregate initialization
std::array a1{ {1, 2, 3} }; // double-braces required in C++11 prior to the CWG 1270 revision
// (not needed in C++11 after the revision and in C++14 and beyond)
std::array a2 = {1, 2, 3}; // never required after =
std::array<:string> a3 = { std::string("a"), "b" };
// container operations are supported
std::sort(a1.begin(), a1.end());
std::reverse_copy(a2.begin(), a2.end(),
std::ostream_iterator(std::cout, " "));
std::cout << '
';
// ranged for loop is supported
for(const auto& s: a3)
}
:
3 2 1
a b
참조 주소:https://en.cppreference.com/w/cpp/container/array
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C++11 의 for each 출력C++실험 수업 은 for each 순환 으로 관련 용기 맵 의 출력 을 실현 하도록 요구 합 니 다.처음에 완전히 싹 트 기 시 작 했 습 니 다.오랫동안 조사 한 자료 에서 야 아래 의 것 을 정리 했다. C++...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.