gpt4 book ai didi

c++ - 为您自己的 STL 容器 C++ 推送 _back

转载 作者:行者123 更新时间:2023-11-30 05:42:24 25 4
gpt4 key购买 nike

我想编写一个用于包含元素序列的类模板。我正在研究一种行为类似于 vector 中的 push_back() 的方法。这是我到目前为止所做的:

template <class T, int N>
class mysequence{
T memblock[N];
public:
void setmember(T value);
T getmember(int x);
};

template <class T, int N>
void mysequence<T, N>::setmember(T value) {
if (sizeof(memblock) == 1) memblock[0] = value;
else {
int y = sizeof(memblock) / sizeof(memblock[0]);
memblock[y] = value;
}
}

template <class T, int N>
T mysequence<T, N>::getmember(int x) {
return memblock[x];
}



int main()
{

mysequence < int, 14 > myints;
myints.setmember(9);
cout << myints.getmember(0);

}

它返回:

-858993460

带有错误信息。据我所知,空类或结构的大小为 1。但我也尝试过:

if (sizeof(memblock) == NULL) memblock[0] = value;

但都一样。我不知道我的代码有什么问题。如果有人有任何想法,我会压制它。

最佳答案

问题在于您对 sizeof 的使用。它不会告诉您有多少个元素,而只会告诉您使用的内存 (N * sizeof(T))。要跟踪包含的元素,您需要设置一个单独的计数器。

关于c++ - 为您自己的 STL 容器 C++ 推送 _back,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30684284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com