준비물 : http://googletest.googlecode.com/files/gtest-1.6.0.zip
위 링크를 통해 gtest-1.6.0.zip 받아서 압출을 풀자.
압축을 풀면, \gtest-1.6.0\msvc 라는 폴더가 있는데, 거기에 빌드할 수 있는 .vcproj 파일이 있다.
우리는 multi-debug을 이용한 lib을 사용해야 하기때문에 gtest-md.vcproj를 열어 .vcxproj파일을 만들고
[Build]->[Batch build...]로 gtest-md 와 gtest_main_md 의 Debug와 Release를 선택해서 빌드 한다.
빌드 이후, 아래와 같은 폴더에 2개씩 lib이 생성된걸 볼수 있을것이다.
\gtest-1.6.0\msvc\gtest-md\Debug
\gtest-1.6.0\msvc\gtest-md\Release
우리는 lib이 위치한 폴더와 include가 위치한 폴더를 적용하면 된다.
\gtest-1.6.0\include
이제 새로운 프로젝트를 열어 콘솔 프로젝트를 만든다.
메인cpp파일에 _tmain() 필요없다.
이미 gtest_main_md.lib 안에는 main()도 포함되어있다.
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
를 지우고,
속성( property page)를 열어
[C/C++]->[General]->[Additional Include Directories]에
\gtest-1.6.0\include의 위치를 저장한다.
[Linker]->[General]->[Additional Library Directories]에
현재 사용할 lib파일의 위치를 저장한다.
C:\gtest-1.6.0\msvc\gtest-md\Debug
vs2008이하 버전에서는 [도구]->[옵션]을 선택하여 아래와 같이 세팅
Linker->Input->Additional Dependencies에
gtest_main-mdd.lib과 gtestd.lib을 설정
위와 같이 세팅하고, [Ctrl]+[F5]를 눌러보자.
위와 같이 하면 기본적인 gtest를 할수 있는 환경이 되어있는 상태이다.
제너릭 copy함수를 사용하려면, [시작값], [종료값], [복사받을시작값]을 지정하는데
복사받을 값은 복사원본의 사이즈를 미리알고 있어야한다.
그래서
백터컨테이너를 이용할때 [복사받을시작값].reserve()를 이용해 미리 공간확보해야하는줄 알았다.
#include <vector>위와 같이 작업하면
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
vector<int> n1,n2;
n1.push_back(1); ///< 복사할 데이터
n1.push_back(2);
n1.push_back(3);n2.reserve(n1.size()); ///< 공간확보
copy(n1.begin(), n1.end(), n2.begin());
return 0;
}
뷁...
n2.resize(n1.size());
resize를 이용하자
혹은,
insert_iterator를 이용하자
copy(n1.begin(), n1.end(), insert_iterator<vector<int> >(n2, n2.begin()) );insert_iterator는 현재 아무값도 저장되지 않은 백터도 begin()되는 공간을 생성해서 넣어준다.