C++指针的困境
C++ Pointers Dilemma
在过去的几个小时里,我一直在用C++玩指针
然后我陷入了困境。。。
vector<int> one[3];
vector<int>* two[3];
vector<vector<int> > three(3);
vector<int>** four = new vector<int>*[3];
我想创建一个包含3个整数向量的数组(或向量)
我认为我知道的(如果我错了,请纠正我):
- ONE是一个由三个std::vector对象组成的数组(我想所有这些对象都是使用默认构造函数初始化的)
TWO是一个由三个std::矢量指针组成的数组。这意味着我必须动态地分配三个指针,如下所示:
two[0] = new vector<int>(); two[1] = new vector<int>(); two[2] = new vector<int>();
THREE是一个向量,包含三个std::vector初始化的对象。
- FOUR是指向三个std::矢量指针中第一个的指针
实现这一目标的最佳方式是什么(为什么?)
更新:
这是LLDB在打印这些变量时的输出
http://pastebin.com/raw.php?i=JLyeB4uK
听起来不对。。。
代码为:
//METHOD ONE:
vector<int> one[3];
//METHOD TWO:
vector<int>* two[3];
two[0] = new vector<int>();
two[1] = new vector<int>();
two[2] = new vector<int>();
//METHOD THREE:
vector<vector<int> > three(3);
//METHOD FOUR:
vector<int>** four = new vector<int>*[3];
four[0] = new vector<int>();
four[1] = new vector<int>();
four[2] = new vector<int>();
感谢:)
我想创建一个数组(或向量),其中包含3个整数向量
std::array<std::vector<int>,3> myThreeVectors;
将是IMHO的最佳选择
不幸的是,这不适用于c++11之前的标准。作为代理,您可以最好地使用简单的c样式数组(任何像样的c++编译器都应该能够正确处理普通数组元素的类实例化):
std::vector<int> myThreeVectors[3] = { };
相当于
std::vector<int> myThreeVectors[3] =
{ std::vector<int>()
, std::vector<int>()
, std::vector<int>()
};
这是一个运行示例:
#include <iostream>
#include <vector>
using namespace std; // Don't use this in headers
std::vector<int> myThreeVectors[3] = { };
int main() {
for(int i = 0; i < 3; ++i)
{
cout << "myThreeVectors[" << i << "].size() = " <<
myThreeVectors[i].size() << endl;
}
return 0;
}
您使用的LLDB是什么版本?
使用TOT,我得到:
(std::__1::vector>[3])one={
[0]=大小=0{}
[1] =size=0{}
[2] =size=0{}
}
(std::__1::vector>*[3])二={
[0]=0x00000001001039a0大小=0
[1] =0x00000001001039c0大小=0
[2] =0x00000001001039e0大小=0
}
(std::_1::vector_1::vector>,std::__1::分配器>>)三=大小=3{
[0]=大小=0{}
[1] =size=0{}
[2] =size=0{}
}
(std::__1::vector>**)四=0x0000000100103980大小=0
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- C++指针的困境
- C++中的指针 - 初学者的困境
- C++——智能指针和自定义内存分配困境