나는 jave 프로그래머용 com/go/learn_fl_cs4_learningas2_kr C/C++. 그래서 내가 알고 있는 Java 는 시스템트라이코프 같은 함수 (); 복사하기 어레이입니다. 제가 부탁하고 싶은게 있으면 C 나 C++ 복사하기 기능을 어레이입니다. 하지만 당시 겨우 찾을 수 있는 구축을 통해 복제본에 어레이에서는 for 루프, 포인터, etc. 저는 그 기능을 사용할 수 있는 어레이에서는 복제본에 있나요?
이미 언급한 것처럼, C 에서 사용하는 것과 다른 '메맥피'. 하지만 이 때문에 데이터 구조를 직접 또는 물리적 메모리 복제본에 수행합니까 경우 서로 포인터는 포인터 가지고 있는 계속 가리키십시오 복제본에 원본 객체.
C++에서 멤버 어레이입니다 메맥피 경우 '을 사용할 수도 있습니다.' 는 포드 (즉, 어떤 유형을 사용한 C 에서 근본적으로 바뀌지 않을 수도 있습니다), '아니다' 가 있지만, 일반적으로 메맥피 수 있습니다. 앞에서 언급한 다른 함수를 사용할 수 있다 '는' 표준용량 복제본에.
이러한 점을 고려하면, c++에서 기초형상 어레이에는 거의 사용할 수 있습니다. 그 중 하나를 사용하여 표준 컨테이너입니다 인컨텍스트 합니다 ('표준용량 벡터입니다' 가장 근접한 내장현 어레이입니다, 또한 내가 생각하는 가장 가까운 jave 어레이에는 - 더 이상 일반 c++컴파일러는 어레이에는 랑하니 - 하지만 데크 표준용량 표준용량 목록 '수' '또는' 더 적절한 경우에 따라) 또는 ',' 표준용량 어레이입니다 c++11 사용하는 경우, 이것은 매우 가까운 값을 시맨틱스를 내장현 어레이에는 갖추고 있지만, 여타 c++컴파일러는 유형. 여기서 언급한 바와 같이 모든 유형에 의해 건설 또는 복제본에 할당에서는 복사할 수 있습니다. 또, cross-copy" " 수 있습니다. (심지어 내장현 어레이입니다 에서 사용) 에서 다른 포네 반복자가 구문.
따라서 가능성을 개요입니다 (I solaris. 모든 관련 헤더도 그동안 포함).
int main()
{
// This works in C and C++
int a[] = { 1, 2, 3, 4 };
int b[4];
memcpy(b, a, 4*sizeof(int)); // int is a POD
// This is the preferred method to copy raw arrays in C++ and works with all types that can be copied:
std::copy(a, a+4, b);
// In C++11, you can also use this:
std::copy(std::begin(a), std::end(a), std::begin(b));
// use of vectors
std::vector<int> va(a, a+4); // copies the content of a into the vector
std::vector<int> vb = va; // vb is a copy of va
// this initialization is only valid in C++11:
std::vector<int> vc { 5, 6, 7, 8 }; // note: no equal sign!
// assign vc to vb (valid in all standardized versions of C++)
vb = vc;
//alternative assignment, works also if both container types are different
vb.assign(vc.begin(), vc.end());
std::vector<int> vd; // an *empty* vector
// you also can use std::copy with vectors
// Since vd is empty, we need a `back_inserter`, to create new elements:
std::copy(va.begin(), va.end(), std::back_inserter(vd));
// copy from array a to vector vd:
// now vd already contains four elements, so this new copy doesn't need to
// create elements, we just overwrite the existing ones.
std::copy(a, a+4, vd.begin());
// C++11 only: Define a `std::array`:
std::array<int, 4> sa = { 9, 10, 11, 12 };
// create a copy:
std::array<int, 4> sb = sa;
// assign the array:
sb = sa;
}
C++11 이후 '' 표준용량 어레이입니다 어레이에는 직결됨 복사할 수 있습니다.
std::array<int,4> A = {10,20,30,40};
std::array<int,4> B = A; //copy array A into array B
다음은 대한 설명서 표준용량 어레이입니다
() ',' 메맥피 사용할 수 있습니다.
void * memcpy ( void * destination, const void * source, size_t num );
'숫자' 바이트입니다 위치에서 값을 복사됩니다 메맥피 () '' 원본 '에서' 대상 '에서' abc. 직접 메모리 블록과 abc.
만약 '대상' 와 '원본' 중첩됩니다 관심용 멤모브 () '' 사용할 수 있습니다.
void * memmove ( void * destination, const void * source, size_t num );
'숫자' 바이트입니다 위치에서 값을 복사됩니다 멤모브 () '' 소스 '를 통해' 대상 '에서' abc. 메모리 블록과 abc. 중간 버퍼로 복사 수행되는지 수 있는 것처럼 사용된 대상 및 소스 중첩할.
내가 답을 같은 에드 S. 있지만, 이 때 아닌 것처럼 정의됩니까 포인터 크기 고정 어레이에는 어레이에는 사용할 수 있습니다.
따라서 이 정의되어 있는 솔루션 c++컴파일러는 어레이입니다 포인터:
"'cpp const int 버퍼 크기 = 10;
오리가라이 챨, 뉴어리. 표준용량 복제본에 (오리가라이, 오리가라이 + 버퍼 크기, 뉴어리); "'
참고 *: 버퍼 크기 빼지 않아도 '' 을 (를) 1:
>. 1) 의 모든 요소를 복제본에 maxvalorarray [첫 번째, 마지막) 부터 반발이 워낙 지난해 1 - 1
복사 (copy) '' 적합한 표준용량 컨테이너입니다 c++11 에서 사용할 수 있습니다.
template <typename Container1, typename Container2>
auto Copy(Container1& c1, Container2& c2)
-> decltype(c2.begin())
{
auto it1 = std::begin(c1);
auto it2 = std::begin(c2);
while (it1 != std::end(c1)) {
*it2++ = *it1++;
}
return it2;
}
내가 여기 열거하십시오 견딜 수 있는 C 와 C++ 언어를 어레이이며 2. 메맥피 및 복제본에 복제본에 c++컴파일러는 srdf/ar 수 있는 것은 모두 사용해야 합니다 사용할 수 없는 C 의 경우 메맥피 복사하고 어레이입니다 C.
#include <stdio.h>
#include <iostream>
#include <algorithm> // for using copy (library function)
#include <string.h> // for using memcpy (library function)
int main(){
int arr[] = {1, 1, 2, 2, 3, 3};
int brr[100];
int len = sizeof(arr)/sizeof(*arr); // finding size of arr (array)
std:: copy(arr, arr+len, brr); // which will work on C++ only (you have to use #include <algorithm>
memcpy(brr, arr, len*(sizeof(int))); // which will work on both C and C++
for(int i=0; i<len; i++){ // Printing brr (array).
std:: cout << brr[i] << " ";
}
return 0;
}
첫째, , 벡터입니다 사용할 수 있기 때문에 틀렸다니까 스위칭이란 c++컴파일러는 권장됩니까 대신 기존 어레이입니다 . 또, '복사하기' 를 선택해야 어레이나 벡터입니다 표준용량 복제본에 당신꺼에요.
이 페이지를 dell. 확보하십시오 복사 기능이 사용 방법: http://en.cppreference.com/w/cpp/algorithm/copy
예:
std::vector<int> source_vector;
source_vector.push_back(1);
source_vector.push_back(2);
source_vector.push_back(3);
std::vector<int> dest_vector(source_vector.size());
std::copy(source_vector.begin(), source_vector.end(), dest_vector.begin());