vector

2023-05-16

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

//容器: vector ,相当于一个数组

//迭代器: vector<int>::iterator


void show(vector<int> &v)
{
	vector<int>::iterator itstart = v.begin();
	vector<int>::iterator itend = v.end();
	//遍历
	/*while (itstart != itend)
	{
		cout << *itstart << endl;
		itstart++;
	}*/

	for (vector<int>::iterator i = itstart; i != itend; i++)
	{
		cout << *i << " ";
	}
	cout << endl;
}

int main(void)
{
	cout << "vector构造函数" << endl;
	vector<int> v1;       //默认构造函数
	vector<int> v2(6,6);  //vector(n, elem);构造函数将n个elem拷贝给本身
	vector<int> v3(v2);   //或vector<int> v3(v2.begin(),v2.end());vector(v.begin(), v.end());将v[begin(), end())区间中的元素拷贝给本身
	show(v2); show(v3); cout << endl;

	cout << "赋值(重载=号,函数assign)" << endl;
	v1 = v2;            //或v1.operator=(v2);vector& operator=(const vector &vec);
	show(v1); show(v2);
	v2.assign(6, 5);     //assign(n, elem);
	v1.assign(v2.begin(), v2.end());   
	show(v1); show(v2); cout << endl;

	cout << "获取容量和大小" << endl;
	cout << v1.empty() <<endl;//判断是否为空,返回0,不为空。
	cout << v1.capacity() << endl; //容器的容量
	cout << v1.size() << endl;     //返回容器中元素的个数
	v1.resize(10,6);			   //容器变长,第二个参数填充新位置
	show(v1);                      //resize(int num, elem);
	v1.resize(5);                  //容器变短,超出容器长度的元素被删除
	show(v1); cout << endl;        //resize(int num);若容器变长,以默认值0填充新位置

	cout << "插入和删除" << endl;
	v2.push_back(6);  //尾部插入元素
	show(v2);
	v2.pop_back();   //删除最后一个元素
	show(v2);
	v2.insert(v2.begin()+3,3,6);  //insert(const_iterator pos, int count,ele);迭代器指向位置pos插入count个元素ele
	show(v2);
	v2.erase(v2.begin()+4);       //删除迭代器指向的元素
	show(v2);
	v2.erase(v2.begin()+3,v2.begin()+5); //删除迭代器从start到end之间的元素
	show(v2);
	v2.clear();                 //删除容器中所有元素
	cout << v2.size() << endl << endl;   

	cout << "数据读取" << endl;
	for (int i = 0; i < 6; i++)
	{
		v2.push_back(i+1);
	}
	show(v2);
	cout << v2.at(2) << endl; //at(int idx); 返回索引idx所指的数据,idx从0算起
	cout << v2[2] << endl;    //中括号重载
	cout << v2.front() << endl;    //返回容器中第一个数据元素
	cout << v2.back() << endl << endl;     //返回容器中最后一个数据元素

	//预留空间
	v2.reserve(10);  //容器预留len个元素长度,预留位置不初始化,元素不可访问
	cout << v2.capacity() << endl;
	show(v2);

	system("pause");
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vector 的相关文章

  • 错误 C2039:“find”:不是“std”的成员

    我刚刚遇到一个奇怪的错误 它说 find 不是 std 的成员 错误 C2039 find 不是 std 的成员 错误 C3861 查找 未找到标识符 基本上 我想查找是否可以在向量中找到字符串 知道为什么会发生这种情况吗 代码帮助告诉我
  • 如何逐步绘制矢量路径? (拉斐尔.js)

    如何逐步动画化矢量路径 就像它被绘制一样 换句话说 慢慢地逐像素地显示路径 我在用着Rapha l js but如果您的答案不是特定于库的 例如可能有一些通用的编程模式可以完成此类事情 我对矢量动画相当陌生 欢迎 使用直线路径很容易做到 就
  • 如果我不定义向量大小,程序会崩溃

    最近在学习C 偶然发现这个问题 std vector
  • 删除向量类成员

    我有一个 A 类 其成员是另一个 B 类的对象指针向量 class A std vector
  • 在另一个向量中定位子向量

    我有一个vector
  • 如何在 C++ 中获取两个向量共有的字符?

    我正在尝试比较两个向量对象 并返回一个包含两个向量中出现的所有字符的向量 如果不编写一些非常复杂的手动方法 将第一个向量中的每个字符与第二个向量中的每个字符进行比较 并使用 if 将其添加到第三个向量 如果它们匹配 将返回 我将如何解决这个
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • std::vector 迭代器失效

    之前有几个关于这个问题的问题 我的理解是调用std vector erase只会使位于某个位置的迭代器无效after被擦除的元素 然而 擦除一个元素后 该位置的迭代器是否仍然有效 当然 前提是它不指向end 擦除后 我对向量如何实现的理解似
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 访问结构向量

    我有一个结构 struct OutputStore int myINT string mySTRING 如果我创建一个 OutputStore 类型的数组 如下所示 OutputStore OutputFileData new Output
  • 如何随机打乱向量中的元素

    我正在尝试完成一项需要发生以下情况的作业 请求所需的元素数量 n 用元素 0 1 2 n 1 填充向量并将其显示到控制台 随机打乱元素并将新的排列显示到控制台 我可以输入向量 但我不知道如何对向量进行洗牌 注意 我不能使用 random s
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • 在 C++ 头文件中声明向量

    我在制作的 C 类的头文件中的向量声明时遇到一些问题 我的整个头文件如下所示 ifndef PERSON H define PERSON H include Message h include
  • 在类中创建向量然后在函数中使用类对象不起作用

    我有课Employees 我试图让用户插入和删除员工 但它不起作用 向量的大小应为 500 class Employees public int maxx 500 vector
  • 添加一条适合 R 中绘图峰值的曲线?

    如果给定两个向量及其图 是否有一个函数可以添加一条适合峰值的曲线 例如 我有 x c 0 20 X 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 y 1 19 4 17 9 8
  • Vector.erase(Iterator) 导致内存访问错误

    我正在尝试对以下内容进行 Z 索引重新排序videoObjects存储在一个vector 该计划旨在确定videoObject这将被放在第一个位置vector 将其删除 然后插入到第一个位置 不幸的是erase 函数总是会导致内存访问错误
  • 使用 PHP 创建矢量图形

    我正在尝试用 PHP 创建矢量图形 我试过开罗 但没能让它发挥作用 我知道 imageMagick 具有矢量功能 但 php net 上的文档非常差 有人可以引导我走向正确的方向吗 这个想法是能够将图形保存到 EPS 我还需要能够使用不同的
  • 将 2D 矢量转换为 2D 数组

    自从我上次访问数组以来已经有一段时间了 我最近一直在使用向量 我需要将 2D 向量转换回 2D 数组 因为我正在使用的库接受类型的参数double array该数组的访问器在哪里foo i j 例如 这是我的代码 double setupH
  • LibGDX 将 Vector2 与浮点值相乘

    有没有办法将 Vector2 与浮点值相乘 我曾经在 XNA 中这样做 通过将归一化方向向量与速度浮点数相乘来计算运动 这几乎是我的代码中使事情正常工作的最后一步 但似乎没有用于接受浮点值的 Vector2 的乘法函数 我可以手动将 x 和

随机推荐