vector用法示例(如何往一个vector中输入一些数字c++高手进来)

本文目录
- 如何往一个vector中输入一些数字c++高手进来
- c++ vector 增删改查的小例子
- 给定任意整数的有限序列和任意选定的正整数(称为模),将序列中的各个成员除以模后,按余数进行分类
- C++ 怎么去用vector
去读取 很多行的字幅 - 主题:如何选取vector里最大值和第二大值
- 简单的opencv问题,如何把一个vector中的值传递给mat
- 怎么把vector对象的容量和具体内容输出出来
- C++ 如何将二维数组转换为vector
- C++vector里下标操作是什么 有什么作用 能举个例子吗
如何往一个vector中输入一些数字c++高手进来
不可以用 cin 》》 ivec; vector中没有重载 》》
你可以这样:
#include 《iostream》
#include 《vector》
using namespace std;
int main()
{
vector《int》 vec;
int temp=0;
cout 《《 "输入整数,以任意字母结束:" 《《 endl;
while(cin 》》 temp) //如果不确定输入数字个数,可以用这种方式
{
vec.push_back(temp); //填充数据
}
int count = vec.size();
for (int i=0;i《count;i++)
{
cout 《《 vec;
}
cout 《《 endl;
return 0;
}
c++ vector 增删改查的小例子
vector容器类型
vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。
vector的构造
函数原型:
template《typename T》
explicit vector(); // 默认构造函数,vector对象为空
explicit vector(size_type n, const T& v = T()); // 创建有n个元素的vector对象
vector(const vector& x);
vector(const_iterator first, const_iterator last);
注:vector容器内存放的所有对象都是经过初始化的。如果没有指定存储对象的初始值,那么对于内置类型将用0初始化,对于类类型将调用其默认构造函数进行初始化(如果有其它构造函数而没有默认构造函数,那么此时必须提供元素初始值才能放入容器中)。
举例:
vector《string》 v1; // 创建空容器,其对象类型为string类
vector《string》 v2(10); // 创建有10个具有初始值(即空串)的string类对象的容器
vector《string》 v3(5, "hello"); // 创建有5个值为“hello”的string类对象的容器
vector《string》 v4(v3.begin(), v3.end()); // v4是与v3相同的容器(完全复制)
vector的操作(下面的函数都是成员函数)
bool empty() const; // 如果为容器为空,返回true;否则返回false
size_typemax_size() const; // 返回容器能容纳的最大元素个数
size_typesize() const; // 返回容器中元素个数
size_type capacity() const; // 容器能够存储的元素个数,有:capacity() 》= size()
void reserve(size_type n); // 确保capacity() 》= n
void resize(size_type n, T x = T()); // 确保返回后,有:size() == n;如果之前size()《n,那么用元素x的值补全。
reference front(); // 返回容器中第一个元素的引用(容器必须非空)
const_reference front() const;
reference back(); // 返回容器中最后一个元素的引用(容器必须非空)
const_reference back() const;
reference operator(size_type pos); // 返回下标为pos的元素的引用(下标从0开始;如果下标不正确,则属于未定义行为。
const_reference operator(size_type pos) const;
reference at(size_type pos); // 返回下标为pos的元素的引用;如果下标不正确,则抛出异常out_of_range
const_reference at(size_type pos) const;
void push_back(const T& x); // 向容器末尾添加一个元素
void pop_back(); // 弹出容器中最后一个元素(容器必须非空)
// 注:下面的插入和删除操作将发生元素的移动(为了保持连续存储的性质),所以之前的迭代器可能失效
iterator insert(iterator it, const T& x = T()); // 在插入点元素之前插入元素(或者说在插入点插入元素)
void insert(iterator it, size_type n, const T& x); // 注意迭代器可能不再有效(可能重新分配空间)
void insert(iterator it, const_iterator first, const_iterator last);
iterator erase(iterator it); // 删除指定元素,并返回删除元素后一个元素的位置(如果无元素,返回end())
iterator erase(iterator first, iterator last); // 注意:删除元素后,删除点之后的元素对应的迭代器不再有效。
void clear() const; // 清空容器,相当于调用erase( begin(), end())
void assign(size_type n, const T& x = T()); // 赋值,用指定元素序列替换容器内所有元素
void assign(const_iterator first, const_iterator last);
const_iterator begin() const; // 迭代序列
iterator begin();
const_iterator end() const;
iterator end();
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
const_reverse_iterator rend() const;
reverse_iterator rend();
vector对象的比较(非成员函数)
针对vector对象的比较有六个比较运算符:operator==、operator!=、operator《、operator《=、operator》、operator》=。
其中,对于operator==和operator!=,如果vector对象拥有相同的元素个数,并且对应位置的元素全部相等,则两个vector对象相等;否则不等。
对于operator《、operator《=、operator》、operator》=,采用字典排序策略比较。
注:其实只需要实现operator==和operator!=就可以了,其它可以根据这两个实现。因为,operator!= (lhs, rhs) 就是 !(lhs == rhs),operator《=(lhs, rhs) 就是 !(rhs 《 lhs),operator》(lhs, rhs) 就是 (rhs 《 lhs),operator》=(lhs, rhs) 就是 !(lhs, rhs)。
vector类的迭代器
vector类的迭代器除了支持通用的前缀自增运算符外,还支持算术运算:it + n、it - n、it2 - it1。注意it2 - it1返回值为difference_type(signed类型)。
注意,任何改变容器大小的操作都可能造成以前的迭代器失效。
应用示例
#include 《iostream》
#include 《cassert》
#include 《vector》
using namespace std;
int main()
{
vector《string》 v(5, "hello");
vector《string》 v2(v.begin(), v.end());
assert(v == v2);
cout《《"》 Before operation"《《endl;
for(vector《string》::const_iterator it = v.begin(); it 《 v.end(); ++it)
cout《《*it《《endl;
v.insert(v.begin() + 3, 4, "hello, world");
cout《《"》 After insert"《《endl;
for(vector《string》::size_type i = 0; i 《 v.size(); ++i)
cout《《v《《endl;
vector《string》::iterator it = v.erase(v.begin() + 3, v.begin() + 6);
assert(*it == "hello, world");
cout《《"》 After erase"《《endl;
for(vector《string》::size_type i = 0; i != v.size(); ++i)
cout《《v《《endl;
assert(v.begin() + v.size() == v.end());
assert(v.end() - v.size() == v.begin());
assert(v.begin() - v.end() == -vector《string》::difference_type(v.size()));
return 0;
}
给定任意整数的有限序列和任意选定的正整数(称为模),将序列中的各个成员除以模后,按余数进行分类
#include 《iostream》
#include 《vector》
#include 《algorithm》
#include 《functional》
#include 《iterator》
using namespace std;
int main() {
int modulus,n,x;
cin 》》 modulus 》》 n;
vector《vector《int》 》 vec(modulus);
while(n--){
cin 》》 x;
vec.push_back(x);
}
for(int i = 0; i 《 modulus; ++i){
if(vec.size()==0)
cout 《《 "No members of the remainder is ";
else {
cout 《《 "The remainder of ";
int j;
for(j = 0; j 《 vec.size() - 1; ++j)
cout 《《 vec 《《 ", ";
cout 《《 vec 《《" modulo " 《《 modulus 《《 " is ";
}
cout 《《 i 《《 endl;
}
return 0;
}
哈哈,杭师大国服的,望采纳!!!
C++ 怎么去用vector 去读取 很多行的字幅
vector相当于数组,调用的时候可以通过取下标的方式调用,也可以通过迭代器调用,示例代码:#include 《iostream》
#include 《vector》
#include 《string》
using namespace std;
int main(int argc, char *argv)
{
int i = 0;
vector《string》 vList;
string strTmp;
for (;i《3;i++)
{
cout《《"请输入一个字符串"《《endl;
cin》》strTmp;
vList.push_back(strTmp);
}
cout《《"使用下标遍历,您输入的三个字符串是:"《《endl;
for (i = 0; i《 3; i++)
{
cout《《vList《《endl;
}
cout《《"使用迭代器遍历,您输入的"《《vList.size()《《"个字符串是"《《endl;
for (vector《string》::iterator itTmp = vList.begin(); itTmp != vList.end(); ++itTmp)
{
cout《《*itTmp《《endl;
}
return 0;
}
运行截图:
主题:如何选取vector里最大值和第二大值
对于求连续区域(比如A1:C10)最大值,可直接在这些区域用函数MAX或LARGE。公式为=MAX(A1:C10) 或=LARGE(A1:C10,1)
对于非连续区域(比如A1,A10,B5,C2:C10),各独立区域用半角逗号分隔。示例公式=MAX(A1,A10,B5,C2:C10) 或=LARGE(A1,A10,B5,C2:C10,1)
简单的opencv问题,如何把一个vector中的值传递给mat
Mat A, C; //仅创建了头部
A = imread(argv, CV_LOAD_IMAGE_COLOR); //在此我们知道使用的方法(分配矩阵)
Mat B(A); //使用拷贝构造函数
C = A; //赋值运算符
由最后一个使用它的对象清理。这里使用引用计数的机制,每当有人复制Mat对象的头,计数器增加。每当一个头被清除,计数器下调。当计数器变为零,矩阵也就被释放了。因为有时会仍然也要复制矩阵的本身,存在着 clone() 或 copyTo() 函数。
怎么把vector对象的容量和具体内容输出出来
#include《iostream》
#include《vector》
using namespace std;
int main()
{
vector《int》 v2(10);//对象中有10个元素
vector《int》::size_type ix=0;
// v2.push_back(10);//注释掉的这句用来检测添加新元素的时候的容量和元素个数的关系
cout《《v2.capacity()《《endl;//输出容器的容量。
cout《《v2.size()《《endl;//输出容器中的元素个数
while(ix!=v2.size()){
cout《《v2《《" ";
}//通过下标输出容器中的元素
cout《《endl;
for(vector《int》::iterator iter=v2.begin();iter!=v2.end();++iter){
cout《《*iter《《" ";
}//通过迭代器输出容器中的元素
cout《《endl;
system("pause");
return 0;
}
/*因为vector的元素是连续存储的,当给容器中添加元素时,如果没有可以容纳新元素的空间,那么vector必须重新分配存储空间,用来存放原来的元素以及新添加的元素,最后撤销旧的存储空间,如果vector每次添加元素都分配和撤销内存,效率会很低。
capacity操作获取在容器需要分配更多的内存空间之前能够存储的元素总数。*/
C++ 如何将二维数组转换为vector
在 C++ 中,可以使用 STL 库中的 vector 来存储二维数组。
可以先定义一个空的 vector,然后通过循环来将二维数组的每一行添加到 vector 中。
示例代码如下:
#include 《vector》
using namespace std;
int array;
vector《vector《int》》 vec;
for (int i = 0; i 《 length1; i++) {
vec.push_back(vector《int》(array + length3));
}
以上就将二维数组转换为了一个vector《vector《int》》 , 如果是三维数组的话,可以使用vector《vector《vector《int》》》
需要注意的是,这样做的空间复杂度和时间复杂度均为 O(length1*length3),如果你的数组非常大,可能会导致空间紧张。
C++vector里下标操作是什么 有什么作用 能举个例子吗
vector 的下标操作和数组是一样的。另外有个 at() 函数同样返回元素引用,越界时抛异常。

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10




