- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经尝试环顾四周并尝试了所有解决方案,但我似乎无法解决我的问题。我知道我在 push_front 线上遇到了段错误,但我只是迷路了。这是代码-
#include <iostream>
#include <fstream>
#include <sstream>
#include <list>
using namespace std;
typedef std::list<int> hSlots; //the list
typedef hSlots* hTable; //an array of lists
class HashTable
{
private:
int p; //p=number of slots in the hash table
hTable tmpPtr;
hTable *table;
public:
HashTable(int p1);
int h1(int k);
~HashTable();
void chainedHashInsert(int x);
};
HashTable::HashTable(int p1)
{
p=p1;
hTable tTable[p];
//initializing to empty lists
for (int i=0; i<p; i++)
{
tmpPtr = new hSlots;
tTable[i] = tmpPtr;
}
table = tTable;
}
//destrcutor
HashTable::~HashTable()
{
delete table;
delete tmpPtr;
}
void HashTable::chainedHashInsert(int x)
{
tmpPtr = table[h1(x)];
cout<<"hashed"<<endl;
tmpPtr->push_front(x); //segmentation fault
}
int HashTable::h1(int k)
{
int z = k%p;
return z;
}
我没有用过很多列表所以我不太确定
最佳答案
也许这毕竟是一个正确的答案。
您的问题是在 C++ 中手动进行内存管理(错误),而实际上不需要这样做。
这是我在 C++ 中使用直接自动内存管理的看法:
#include <vector>
#include <list>
using namespace std;
template <typename T, typename hSlots = std::list<T> >
class HashTable
{
private:
int p; //p=number of slots in the hash table
std::vector<hSlots> table;
int getbucket(int k) { return k%p; }
public:
HashTable(int p1) : p(p1), table(p1) {}
void chainedHashInsert(int x)
{
auto& tmpPtr = table[getbucket(x)];
tmpPtr.push_front(x);
}
};
int main()
{
HashTable<int> table(37);
}
关于c++ - push_front 段错误 11 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181552/
我有一个充满特定数字的链表,称为 intList。什么会 intList.push_front(2 * intList.back()); 对我的 list 做什么? 最佳答案 它会在列表的前面加上列表
如何将单向链表的push_front()方法实现为它的成员函数?下面的代码无法编译(错误:左值需要作为赋值的左操作数),因为您不能为this 指针赋值。有什么办法解决这个问题? #include us
我正在尝试对 C++ 双端队列实现推送前端方法。我这样做的方式是移动数组的每个元素。它有效,但我的程序最后崩溃了!在我的推送前端方法中,我似乎“运行超过我的数组末尾”,导致堆损坏错误、调试断言,那些事
我有一个 std::deque> rooms我正在迭代: for(auto row : rooms) { row.push_front(new Room()); } 但出于某种原因,它只是用
这个问题在这里已经有了答案: Iterator invalidation rules for C++ containers (6 个答案) 关闭 7 年前。 std::forward_list fo
我无法让我的 push_front 正常工作。 new_head->next = head 似乎无法正确链接 new_head 和 head。我的节点类是通常的节点类,其中 next 是节点指针。我的
我正在使用 SDL 开发 GUI。我创建了一个从属/主类,其中包含指向它自己的从属的指针的 std::list 以在 GUI 中创建层次结构(包含按钮的窗口。按钮标签等)。它工作了好一阵子,直到我编辑
在用 C++ 实现基本 vector 时,我在 push_front 问题(下)中遇到问题 _Alloc 是分配器类,content_ 是指向数据的指针,size_ 和capacity_ 是他们所说的
我正在尝试在我创建的类列表上使用 push_front() 函数。我把它放在一个 for 循环中,但是每当循环将新成员插入列表时,它就会立即自动销毁,我假设是因为它超出了范围。我的问题是如何永久添加这
我已经尝试环顾四周并尝试了所有解决方案,但我似乎无法解决我的问题。我知道我在 push_front 线上遇到了段错误,但我只是迷路了。这是代码- #include #include #includ
刚才,我正在阅读 Josuttis 的 STL 书。 据我所知——c++ vector 是一个可以重新分配的 c 数组。所以,我明白了,为什么在 push_back() 之后所有的迭代器和引用都会变得
我正在阅读这里: http://www.cplusplus.com/reference/deque/deque/push_back/ 对于 void push_back (const value_ty
我正在编写一个 2-way Intlist,其中每个节点都有对其上一个和下一个节点的引用。一切似乎都很好,但是当我使用 Push_front() 方法在开头添加节点时,它们没有上一个引用。 list.
我正在编写一个名为 Playlist 的类,它对 PlaylistNodes 执行不同的操作。我在网上看了看并尝试实现push_back和push_front方法,但我没有成功。 PlaylistNo
我有一个类,我想使用标准库列表来存储它们的列表。我基本上想要 push_front() 列表。所以我的代码是这样的: #include /* ... lots of stuff ...*/ comp
Java 中有没有实现push_back() 和push_front() 方法的集合类? 最佳答案 类(class)java.util.LinkedList有 addFirst/Last()、getF
这个问题在这里已经有了答案: Why no push/pop in front of vector? (4 个答案) 关闭 4 年前。 既然std::vector::push_back()存在,为什
我正在使用 Boost.MPL,我有一个编译时列表 ( boost::mpl::list )。当我推回一个元素时,我得到的东西可能等同于一个列表,但不是 boost::mpl::list。 . #in
如标题所示。 我对双端队列的理解是它分配了“ block ”。我看不出分配更多空间如何使迭代器无效,如果有的话,人们会认为双端队列的迭代器比 vector 的保证更多,而不是更少。 最佳答案 C++
此代码编译失败: 类声明: class threadController { private: static std::forward_list threadList; stati
我是一名优秀的程序员,十分优秀!