Jab*_*cky 1 c++ vector stdvector
我想知道下面的代码是否合法.
基本上我有一个std::vector<int>,我有一个处理ints 数组的遗留函数.由于a的元素std::vector总是连续的,所以代码应该始终有效(它实际上适用于我的实现),但它对我来说似乎仍然是一个黑客.
#include <vector>
#include <iostream>
void LecagyFunction(int *data, int length)
{
for (int i = 0; i < length; i++)
std::cout << data[i] << std::endl;
}
int main()
{
std::vector<int> vector;
vector.push_back(5);
vector.push_back(4);
vector.push_back(3);
LecagyFunction(&vector[0], vector.size());
}
Run Code Online (Sandbox Code Playgroud)
预期的输出是:
5
4
3
Run Code Online (Sandbox Code Playgroud)
这不是一个黑客,而是100%合法(和预期)的矢量使用.在C++ 11中,您的代码应该被重写以利用data()成员 - 这是为空向量定义的,不像operator[].
LecagyFunction(vector.data(), vector.size());
Run Code Online (Sandbox Code Playgroud)
并且作为旁注,上面的技术将不起作用vector<bool>,因为后者不遵循常规向量的属性(一个可怕的想法,现在每个人都理解).
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |