作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想编写一个用于包含元素序列的类模板。我正在研究一种行为类似于 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/
考虑以下问题:我有一个 CDevices 类,其中包含一个字符串成员 class CDevice { public: CDevice(void); ~CDevice(void); /
当使用 std::vectors、std::lists(或其他 STL 容器)时,我碰巧经常写这个,因为代码简短(而不是每次都放置显式 vec[index])和内存分配效率(避免复制/移动),我想我不
我想编写一个用于包含元素序列的类模板。我正在研究一种行为类似于 vector 中的 push_back() 的方法。这是我到目前为止所做的: template class mysequence{
考虑以下代码: #include class A { public: A(A&&); // somewhat expensive static std::vector mak
我是一名优秀的程序员,十分优秀!