»
(11)C++14 vector
(18)C++14 智能指针及引用计数*
(19)C++14 多线程pthread*
(20)C++14 同步锁mutex*
(24)C++中的计时与等待*
(25)C++中的高精度计算*
(27)C++14 std::string*
(31)C++高级技能*
vector,向量,在C++中,vector的定义是一个可以变维数的向量。在实际使用中,vector就类似于一个可变长度的数组。vector是一个模板类,元素的数据类型可以是int也可以是double,也可以是float,也可以是自定义的类。vector只在删除头部元素与增长空间时需要做数据的挪动。
下面是vector与C++标准算法库中transform(按维度依次调用)的使用的一个例子:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<double> speedPerSecond{5.0,2.0,3.0};//三维向量
vector<double> fiveSeconds{5.0,5.0,5.0};//挨个乘的乘数
vector<double> goRoute{0.0,0.0,0.0};//经过的路径
vector<double> originalPosition{1.0,1.0,1.0};//原始坐标
vector<double> lastPosition{0.0,0.0,0.0};//最后坐标
// 以下,为了在正版C-Lion中标亮注释而使用 TODO注释 和 FIXME注释
// TODO 使用 std::transform 按维度依次挨个调用C++标准模板库中的乘法std::multiplies
// TODO 注意First2的vector的长度一定要大于等于First1
std::transform(speedPerSecond.begin(), speedPerSecond.end(), fiveSeconds.begin(), goRoute.begin(),std::multiplies<>());
std::cout<<"multiplies result:::";
for(auto r:goRoute){
std::cout<<" "<<r;
}
std::cout<<endl;
// TODO 使用 std::transform 按维度依次挨个调用C++标准模板库中的加法std::plus
// TODO 注意First2的vector的长度一定要大于等于First1
std::transform(originalPosition.begin(),originalPosition.end(),goRoute.begin(),lastPosition.begin(),std::plus<>());
std::cout<<"plus result:::";
for(auto r:lastPosition){
std::cout<<" "<<r;
}
std::cout<<endl;
}
打印结果:
multiplies result::: 25 10 15//两个向量按维度依次挨个乘的结果
plus result::: 26 11 16//两个向量按维度依次挨个累加的结果