Skip to content

Instantly share code, notes, and snippets.

@MasazI
Last active August 29, 2015 14:21
emplacement.cpp
//
// emplacement.cpp
// CplusplusPractice
//
// Created by masai on 2015/05/25.
// Copyright (c) 2015年 masai. All rights reserved.
//
#include <iostream>
#include <vector>
using namespace std;
class A{
public:
A(int i){
cout << "constructor" << endl;
}
A(const A& a){
cout << "copy constructor" << endl;
}
~A(){
cout << "descructor" << endl;
}
};
int main(int argc, char* argv[]){
cout << "push_back ---" << endl;
vector<A> vec;
vec.push_back(0);
vec.clear();
cout << "emplace_back ---" <<endl;
vector<A> vec_e;
vec_e.emplace_back(0);
vec_e.clear();
cout << "emplace_back 非暗黙的変換 ---" <<endl;
vector<A> vec_en;
vec_en.emplace_back(A(0));
vec_en.clear();
cout << "emplace_back 事前確保 ---" <<endl;
// 事前確保
vector<A> vec_r;
vec_r.reserve(3);
vec_r.emplace_back(1);
vec_r.emplace_back(2);
vec_r.emplace_back(3);
vec_r.clear();
// vectorのvector
vector<vector<float>> vec_vec;
// vectorに3つの要素を初期値5でいれる
vec_vec.emplace_back(3, 5);
// vec_vecには1つのベクトルが入る
cout << vec_vec.size() << endl;
// vec_vec.backはvec_vec[0]と同じ
cout << vec_vec.back().size() << endl;
// ベクターには3つの要素
cout << vec_vec[0].size() << endl;
// 5で初期化
cout << vec_vec[0][0] << endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment