c++ - 如何在指针数组中找到指针的数量

标签 c++ arrays pointers

有没有办法找出指针数组中指针的长度/数量?

class Notifications {   
    iMessage **messages;
public:
    Notifications();
    Notifications(const Notifications&);
    Notifications& operator=(const Notifications&);
    Notifications(Notifications&&);
    Notifications&& operator=(Notifications&&);
    ~Notifications();
    void operator+=(const w5::iMessage&);
    void display(std::ostream&) const;

}

我怎样才能找到数组中指针的数量?

最佳答案

你有三个选项,按照善意递增的顺序:

使最后一个为空,所有其他为非空。这是唯一需要您的数据的解决方案,将其视为 c 风格的字符串,除了使用指针而不是 char 之外。

for (iMessage** msg  = messages; *msg; ++msg) { ... }

将大小与您的消息一起存储:

iMessage **messages;
const size_t size;

for (size_t i = 0; i < size; ++i) {
    iMessage* msg = messages[i];
    // ...
}

使用专门设计用于在连续内存中存储任意数量的东西的容器:

std::vector<iMessage*> messages;

for (iMessage* msg : messages) { 
    // ...
}

基本上就是这样,除非您事先知道 messages 的大小,并且它是一个编译时常量,在这种情况下,它是:

iMessage* messages[100];
std::array<iMessage*, 100> messages; 

为您提供正确的字体大小。

关于c++ - 如何在指针数组中找到指针的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038384/

相关文章:

c++ - 从 WinRT C++ 组件访问 COM 对象

javascript - array.length-1 返回 NaN

javascript - 从 jquery 中的二维数组填充下拉列表

在 C 特殊情况下组合 2 个数组

c - 夹板:定义前使用的局部变量

c - Dynamic Memory Allocate,处理Structure时如何正确使用指针?

c# - C# 中的非托管 C++ DLL ... WINAPI 和指针

c++ - [C++]传节点索引好还是传节点本身好?哪个更快?

c++ - 类的运算符 << 重载

c++ - typedef 和 using 在语义上是等价的是什么意思?