找客户去哪个平台,官网seo是什么意思,平面电商设计是什么,管理咨询人员的基本素质使用vector#xff0c;需添加头文件#include#xff0c;要使用sort或find#xff0c;则需要添加头文件#include。函数封装在命名空间std中#xff0c;使用#xff1a;using namespace std;
1、vector的初始化
std::vectorint nVec; // 空对象
std::vecto… 使用vector需添加头文件#include要使用sort或find则需要添加头文件#include。函数封装在命名空间std中使用using namespace std;
1、vector的初始化
std::vectorint nVec; // 空对象
std::vectorint nVec(5,-1); // 创建了一个包含5个元素且值为-1的vector
std::vectorstd::string strVec{a, b, c}; // 列表初始化
std::vectorint nVec; nVec.push_back(i); // 压入元素 要注意“”和“{}”这样的初始化情况如
std::vectorint nVec(101); // 包含10个元素且值为1
std::vectorint nVec{101}; // 包含2个元素值分别为10,1
2、vector访问
方法1数组下标访问
for(size_t i 0; i nVec.size(); i)std::cout nVec[i] std::endl; // 输出元素
方法2迭代器访问
std::vectorint::iterator itr nVec.begin();
for(; itr ! nVec.end(); itr)std::cout (*itr) std::endl;
方法3使用auto
for(auto it: nVec)std::cout it std::endl;
3、vector删除元素 针对于非array容器有多种删除方式以erase为例比如
c.erase(p); // 删除迭代器p所指定的元素返回一个指向被删除元素之后的迭代器。
c.erase(begin,end); // 删除b,e所指定范围内的元素返回一个指向被删除元素之后的迭代器。
c.clear(); // 删除所有元素 注意删除元素会导致迭代器无效。正确的删除元素示例
std::vectorint::iterator iter nVec.begin();
for(auto it nVec.begin(); iter ! nVec.end();)
{if(*it delVal){it nVec.erase(iter);continue;}it;
} 删除容器内某一个特定的元素编写方式可为
std::vectorint::iterator iter std::find(nVec.begin(),nVec.end(),5);
if(iter ! nVec.end())nVec.erase(iter); 删除容器内所有元素当然可以这样
nVec.erase(nVec.begin(),nVec.end());
nVec.clear();
4、vector的容量与大小 vector并非随着每个元素的插入而增长自己它总是分配一些额外的内存容量这种策略使得vector的效率更高些。若要获取当前vector的大小可调用size()函数而获取当前vector的容量可调用capcity()。
5、vector排序 sort函数包含在头文件为#include的c标准库中, #include。
sort函数的三个参数 a待排序的数组的起始地址 b待排序数组的结束地址 c排序的方法可以从大到小也可以从小到大还可以不写默认为从小到大。
5.1、默认排序
int cNum[10] {0,4,6,8,9,2,3,5,6,7};
sort(cNum, cNum10);vectorint vecNum{0,4,6,8,9,2,3,5,6,7};
sort(vecNum.beigin()), vecNum.end());
5.2、自定义排序
bool complare(int a,int b)
{return ab; // 从大到小排序
}vectorint vecNum{0,4,6,8,9,2,3,5,6,7};
sort(vecNum.beigin()), vecNum.end(), complare);sort(vecNum.begin(), vecNum.end(),[](int a ,int b){return ab;
}); //使用lambda表达式
5.3、结构体排序
struct node
{int a;int b;double c;
}bool cmp(node x,node y)
{if(x.a!y.a) return x.ay.a;if(x.b!y.b) return x.by.b;return x.cy.c;
}
6、vector的交集、并集、补集
#include iostream
#include vector
#include algorithm //sort函数、交并补函数
#include iterator //求交并补使用到的迭代器
using namespace std;// 容器vector中元素的去重
vectorint unique_element_in_vector(vectorint v)
{vectorint::iterator vector_iterator;sort(v.begin(),v.end());vector_iterator unique(v.begin(),v.end());if(vector_iterator ! v.end()){v.erase(vector_iterator,v.end());}return v;
}// 两个vector求交集
vectorint vectors_intersection(vectorint v1, vectorint v2)
{vectorint v;sort(v1.begin(),v1.end()); sort(v2.begin(),v2.end()); set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 return v;
}// 两个vector求并集
vectorint vectors_set_union(vectorint v1, vectorint v2)
{vectorint v;sort(v1.begin(),v1.end()); sort(v2.begin(),v2.end()); set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 return v;
}//判断vector的某一元素是否存在
bool is_element_in_vector(vectorint v,int element)
{vectorint::iterator it;itfind(v.begin(),v.end(),element);if (it!v.end()){return true;}else{return false;}
}//两个vector求补集
std::vectorint d1;
std::vectorint d2;
std::cout set_different std::endl;
//Copies the elements from the sorted range [first1, last1)
//which are not found in the sorted range [first2, last2) to the range beginning //at d_first
std::set_difference(v1.begin(),v1.end(),result.begin(),result.end(),std::back_inserter(d1));
std::set_difference(v2.begin(),v2.end(),result.begin(),result.end(),std::back_inserter(d2));