在矢量中查找信息
Finding information in a vector?
在C++中,我知道为了创建动态数组,需要使用向量。然而,当我需要找到我放入向量中的信息时,我遇到了一个问题。
例如:比方说,我有一个简单的矢量,它存储了一个人的名字和写的一条小消息。在矢量中,我如何找到比尔的位置。
当我发布这个问题时,我还试图了解如何在PHP中做到这一点。
你确实很困惑。让我试着帮你。
有一件事可能会让你感到困惑:std::vector不是几何向量。它只是内存中连续的同一类型的数据序列。所以它就像一个数组。
a) 根据变量确定矢量的大小。例如,如果我使用的是一个数组,它看起来像array[x][y](I知道这样做是不可能的)。如何使用矢量
std::vector基本上是一个自动管理的动态数组。
这意味着它是内部的一个数组,但它是由代码管理的,当您试图添加超过当前容量的数据时,代码会确保数组增长(变得更大)。
实际上,std::vector是一个类模板。这意味着它不是一个真正的类,它是编译器用来为自己生成一个真正类的代码。如果我说
std::vector<int> my_ints; // this is a vector of ints
这个向量只能容纳int。然后:
std::vector<std::string> name_list;
这个包含std::string对象。
正如我所说,在内部,它只是动态管理数组的代码。你可以把前面的例子想象成这样:
class
{
unsigned long size; // count of elements contained in this container
unsigned long capacity; // count of elements that the memory allocated by the array can hold
int* array; // array containing the values, created using new, destroyed using delete
}
my_ints;
这是一个关于它内部的过于简单化的观点,所以不要认为它完全是这样的,但它可能是有用的。
现在,当您添加值时,该值会复制到数组的内存中,复制到尚未使用的元素中(例如通过push_back()),或者重写已经存在的元素(例如使用insert())。
如果添加一个值,而向量的容量不足以容纳所有值,那么向量将自动增长:它将创建一个更大的数组,将其当前值复制到内部,也复制附加值,然后删除以前的数组。理解这一点很重要:如果一个向量增长,那么你不能假设它的数据在内存中总是在同一地址,所以指向它的数据的指针是不可信的。
b) 第二,我该如何使用push-back命令来存储值特定点内的变量。如果我使用的是数组它就像array[x][y]+=q。其中x和y是数组中的点并且q是值。
您不使用push_back()在两个值之间添加值,而是使用insert()。
syntaxe数组[x][y]+=q肯定不会起到您所描述的作用。它将把q加到位置数组[x][y]的值上。
数组与std::vector
不同,因为它们的大小是固定的。数组存在时,数组的所有元素都存在。使用默认构造函数创建std::vector
时,它是空的。它不包含任何元素,因此不能对任何元素进行索引。
但是,std::vector
确实有一个采用初始大小的构造函数。如果将单个int
参数传递给std::vector
构造函数,它将默认初始化那么多元素。例如:
std::vector<int> v(10); // Will have 10 ints
如果您想要等效的2D阵列,则需要std::vector<std::vector<T>>
。如果你想用一个特定的大小来构造它,你需要如上所述指定外部std::vector
的大小,并向它传递每个元素应该初始化的std::vector
。例如,如果你想要一个10x20矢量:
// This will have 10x20 ints
std::vector<std::vector<int>> v(10, std::vector<int>(20));
一旦这些元素存在,就可以像对数组一样对它们进行索引:
int value = v[x][y];
值得注意的是,C++11引入了具有编译时固定大小的std::array
。你可以这样使用它:
std::array<std::array<int, 20>, 10> arr;
但是,如果希望数组大小由变量决定,则不能使用此选项。维度必须是编译时间常数。
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 如何在 Windows 上从 C++11 统计信息对象的文件序列号中查找文件名
- C++ ATIOGLXX.pdb 包含查找模块 ATIOGLXX.dll 源代码所需的调试信息
- 在TXT文档的一部分中查找信息并将其存储在变量中
- Fuse文件系统查找/Trash、/autorun.inf和/.xdg卷信息文件
- 在 windbg 中的用户模式转储中查找 hwnd 信息
- 如何从任意客户端查找 DHCP 租约信息
- 在读取udp之前查找sockaddr信息
- 查找生成WM_INPUT消息的设备的位置信息
- 在矢量中查找信息
- 如何使用C++中的sysconf()函数来查找以下信息
- 在未排序数组中查找第二小元素的详细信息