Linux C++ ._MyFirst ._MyLast 向量等效
Linux C++ ._MyFirst ._MyLast vector equivilent
在 Windows 使用 VS2013 时,我使用 ._MyFirst 和 ._MyLast 获取指向向量的第一个和最后一个元素的指针,以便通过指针递增进行快速操作。
vec._MyFirst->element = anotherElement;
vec._MyFrist++;
在 Linux 虽然这似乎不存在,但我认为必须有一个等价物。有人知道这是什么吗?
我知道不应该这样做,但在调试模式下使用它们几乎没有开销,因此我可以在大量向量上快速进行测试。
_MyFirst 是向量本身使用的指向第一个元素的直接指针,_MyLast 指向最后一个元素。不是使用迭代器,而是通过向量更快地递增指针内存地址,这就是我使用它们的原因。此外,如果向量被调整大小,._MyFirst 和 ._MyLast 将始终指向第一个和最后一个元素。 linux 他们不在那个名字下。
谢谢
您可以只获取指向内部容器开头的指针并递增它以获得结尾。
auto fPtr = vec.data();
auto ePtr = fPtr + vec.size();
好的,我看到您正在寻找带有调试信息的性能。一种方法(正如您正在做的那样)是编译一个没有优化的调试版本,然后通过编写非标准代码寻求 'optimise source code by hand'。
另一个当然是编写 standards-conforming 代码并简单地打开优化和调试输出。
前段时间我在回答 this question
时举例说明了编写正确代码的成本
TL;DR - 开销为零。
您还可以通过以下方式获得指点:
auto sPtr = &vec.front();
auto lastPtr = &vec.back();
结束指针在最后一个元素后一个位置:
auto ePtr = lastPtr + 1;
注意:对于 data() 方法,您需要 c++11 或更高版本。 VS 2013 部分支持它,但在 Linux 下,您可能需要告诉他使用该标准。
在 Windows 使用 VS2013 时,我使用 ._MyFirst 和 ._MyLast 获取指向向量的第一个和最后一个元素的指针,以便通过指针递增进行快速操作。
vec._MyFirst->element = anotherElement;
vec._MyFrist++;
在 Linux 虽然这似乎不存在,但我认为必须有一个等价物。有人知道这是什么吗?
我知道不应该这样做,但在调试模式下使用它们几乎没有开销,因此我可以在大量向量上快速进行测试。
_MyFirst 是向量本身使用的指向第一个元素的直接指针,_MyLast 指向最后一个元素。不是使用迭代器,而是通过向量更快地递增指针内存地址,这就是我使用它们的原因。此外,如果向量被调整大小,._MyFirst 和 ._MyLast 将始终指向第一个和最后一个元素。 linux 他们不在那个名字下。
谢谢
您可以只获取指向内部容器开头的指针并递增它以获得结尾。
auto fPtr = vec.data();
auto ePtr = fPtr + vec.size();
好的,我看到您正在寻找带有调试信息的性能。一种方法(正如您正在做的那样)是编译一个没有优化的调试版本,然后通过编写非标准代码寻求 'optimise source code by hand'。
另一个当然是编写 standards-conforming 代码并简单地打开优化和调试输出。
前段时间我在回答 this question
时举例说明了编写正确代码的成本TL;DR - 开销为零。
您还可以通过以下方式获得指点:
auto sPtr = &vec.front();
auto lastPtr = &vec.back();
结束指针在最后一个元素后一个位置:
auto ePtr = lastPtr + 1;
注意:对于 data() 方法,您需要 c++11 或更高版本。 VS 2013 部分支持它,但在 Linux 下,您可能需要告诉他使用该标准。