目标是访问字符串向量的"第n"元素,而不是[]运算符或"at"方法.根据我的理解,迭代器可用于浏览容器,但我以前从未使用过迭代器,而我正在阅读的内容令人困惑.
如果有人能给我一些如何实现这一目标的信息,我将不胜感激.谢谢.
这是一个有效的LinkedList析构函数吗?我仍然对他们感到困惑.
我想确保我正确理解这一点.
LinkedList::~LinkedList()
{
ListNode *ptr;
for (ptr = head; head; ptr = head)
{
head = head->next
delete ptr;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,在循环开始时,指针ptr被设置为保存head的地址,即列表中的第一个节点.然后将head设置为下一个项目,该项目将在第一次删除后成为列表的开头.ptr被删除,第一个节点也是如此.在循环的第一次迭代中,指针再次设置为head.
关注我的事情是到达最后一个节点.条件"头;" 应检查它是否为空,但我不确定它是否会起作用.
任何帮助赞赏.
请原谅我,如果我只是公然缺少某些东西,但我正在尝试从结构和c转换为类和c ++.
继承人我正在做的事情:
A有一个"Checkers"类和一个"Board"类.
现在使用结构,我可以通过执行以下操作在我的"board.cpp"文件中创建一个Checkers数组:
Checker checkers[2][12]
(每边0和1,每件0-11)
问题是,对于类,执行相同的声明将尝试调用"Checkers"构造函数.我收到此错误:"错误:没有匹配函数调用'Checker :: Checker()'"
我的Checker构造函数处理初始化单个部分(如果它在0或1侧,0-11部分),所以我不打算在那里调用它.
有没有办法避免这种情况,或者我是否采取了错误的方式?谢谢.
编辑:或者我可能只是设计构造函数来初始化一个检查器数组?你甚至可以将变量声明为类/对象的数据类型吗?
cout << hex << 11 << endl;
cout << 12 << endl;
Run Code Online (Sandbox Code Playgroud)
将打印:
一个
b
如果我小丑13,它将被打印为'c'.如何从现在开始删除十六进制修改器,以便它只打印13?这可能很简单,但我试着在其他地方寻找答案.谢谢.
我宣布:
queue<int, list<int> > Q
Run Code Online (Sandbox Code Playgroud)
一系列电话后:
Q.push(37);
Q.pop();
Q.push(19);
Q.push(3);
Q.push(13);
Q.front();
Q.push(22);
Q.push(8);
Q.back();
Run Code Online (Sandbox Code Playgroud)
我得到:19-> 3-> 13-> 22-> 8-> NULL
我没有得到的是对Q.front()和Q.back()的调用.根据我的理解,他们分别返回对第一个或最后一个元素的引用,但是我没有看到如果没有进行这些调用,我的列表会有什么不同.他们有任何影响吗?
对不起,如果这看似微不足道,但我想弄清楚这些电话是否有目的,或者我的教授只是试图搞砸我.
假设我有一个"Passenger"结构,它有一个名称字段.
如果我这样做(就像我的书的语法显示):
fread(&passenger, sizeof(Passenger), 1, in_fp);
printf("%s", (*passenger).first_name)
Run Code Online (Sandbox Code Playgroud)
我遇到了分段错误,但如果我这样做:
fread( (char *)passenger, sizeof(Passenger), 1, in_fp);
printf("%s", (*passenger).first_name)
Run Code Online (Sandbox Code Playgroud)
从文件中读取的名称将被打印出来.
我此刻真的很困惑.
所以我有5个文件:main.c,flight.c,flight.h,passenger.c和passenger.h
flight.h有flight.c的函数原型,passenger.h有passenger.c的函数原型
flight.c和passenger.c有这些功能的定义.
main.c是我将与之交互的程序,从两个.c文件调用函数
我不太确定.o文件的用途是什么,请有人解释一下吗?这是我的Makefile:
flight.o: flight.c flight.h
gcc -Wall -g -c flight.c
passenger.o: passenger.c passenger.o
gcc -Wall -g -c passenger.c
main.o: main.c
gcc -Wall -g -c main.c
reservations.out: main.o flight.o passenger.o
gcc -Wall -g flight.o passenger.o main.o -o reservations.out
Run Code Online (Sandbox Code Playgroud)
编辑:然后我使用命令"make Makefile",并得到一个错误:make:没有什么可以为`Makefile'做.
在我的文件中,gcc之前有一个标签.我很感激任何帮助,我确信有很多事情我做错了.谢谢.
我正在尝试使用for循环来获取以.cpp结尾的文件的文件名.
码:
for cppfile in ls *.cpp ; do
echo $cppfile
done
Run Code Online (Sandbox Code Playgroud)
我打算做的不仅仅是回应这个论点,但是现在看来,除了我得到命令作为第一个论点之外,它的工作正常.有一种简单的方法可以避免这种情况,还是我必须以另一种方式进行循环?
SVector.H:
void pop_back() throw (underflow_error);
Run Code Online (Sandbox Code Playgroud)
在我的SVector.cpp文件中,我是否还应该包含throw(underflow_error)部分?
void pop_back() throw (underflow_error)
{
// implementation
}
Run Code Online (Sandbox Code Playgroud)
要么
void pop_back()
{
// implementation
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试编码一个数独求解器,我试图这样做的方法是有一个9x9指针网格,其中包含具有解决方案或有效可能值的"set"对象的地址.
我能够通过2个for循环遍历数组,首先遍历每一列,然后转到下一行并重复.
但是,我很难想象如何指定特定单元属于哪个子网格(或框,块等).我最初的印象是在for循环中有if语句,例如如果row <2(行从0开始)&col <2那么我们在第一个块中,但这似乎变得混乱.有没有更好的方法来做到这一点?