2016年4月28日 星期四

C++ vector 複製

在C++的stl::vector 裡

如果想要複製一個vector到另一個vector的話有太多種方法

1.使用for 直接複製(速度最慢)

for(int i = 0; i < original.size(); ++i)
    new_vector[i] = original[i];

2.使用vector.assign()

new_vector.assign(original.begin(), original.end());

個人覺得這是最佳解,速度比起上一個快很多

3.使用vector.insert()

new_vector.reserve(original.size());
new_vector.insert(new_vector.end(), original.begin(), original.end())
insert也可以使用在把兩個vector合併(append)
用法就與上面類似了,就是reserve的時候也要加上new_vector的大小

4.使用copy constructor

new_vector = vector(original);
這個方法稍微測試了一下,好像不是真正的去複製
只是把new_vector指向了original的記憶體位置
也就是說new_vector跟original是同一個物件
動了其中一個兩個都會改變
也就是彼此是彼此的別名(我在說啥XD)

2 則留言:

  1. Bonuses, Codes & Bonuses at Casino Site
    Free spins no deposit and welcome bonus planet win 365 Deposit and receive a welcome bonus of up 카지노 to €300. No-Deposit Bonus | €30 in 샌즈카지노 Free Spins | Free Bonuses.

    回覆刪除