我正在学习C++作为第一语言.如果我不开始快速查看实际代码,我觉得我即将达到学习上限(我不是通过课程学习).以下是我的两个主要问题:
我希望这与SO相关,但我可以看到需要关闭它.谢谢您的帮助.
有关:
我正在编写一个合并排序函数,现在我只使用一个测试用例数组(没有输入 - 这是静态的,现在).我不知道如何将数组作为参数传递.这是我现在的代码:
//merge sort first attempt
#include <iostream>
#include <algorithm>
#include <vector>
int mergeSort(int[]);
int main() {
int originalarray[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 10 };
mergeSort(originalarray[]);
}
int mergeSort(int[] originalarray) {
int num = (sizeof(originalarray) / sizeof(int));
std::vector < int > original(num);
if (num > 2) {
return num;
}
// Fill the array using the elements of originalarray
// This is just for demonstration, normally original will be a parameter,
// …
Run Code Online (Sandbox Code Playgroud) 请建议解决此问题的解决方案?给出命令时__CODE__
发生的错误是
__CODE__
..
这是在C++中在堆上创建变量的方法:
T *ptr = new T;
Run Code Online (Sandbox Code Playgroud)
ptr显然是指向新T的指针.我的问题是,你能做到这一点:
T *ptr = new T*;
Run Code Online (Sandbox Code Playgroud)
这似乎可能导致一些非常非常危险的代码.有谁知道这是否可行/如何正确使用它?
列表在Scala中是不可变的,所以我试图弄清楚如何"删除" - 实际上,创建一个新的集合 - 该元素然后关闭列表中创建的间隙.这听起来像是一个使用地图的好地方,但我不知道如何开始这个实例.
课程是一个字符串列表.我需要这个循环,因为我实际上有几个列表,我需要删除该索引处的元素(我使用多个列表来存储列表中的数据,我只是通过简单地确保索引将始终这样做跨列表对应).
for (i <- 0 until courses.length){
if (input == courses(i) {
//I need a map call on each list here to remove that element
//this element is not guaranteed to be at the front or the end of the list
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我为这个问题添加一些细节.我有四个列表,通过索引相互关联; 一个列表存储过程的名称,这个类在一个简单的INT格式(即130)开始的时候一个店,一个店或者"AM"或"PM",以及一个存储类为int(所以"MWF"的日子evals to 1,"TR"evals to 2,等等.我不知道是否有多个这是解决这个问题的最佳或"正确"的方法,但这些都是我所拥有的工具(自从我16岁以来没有认真编程的第一年comp sci学生).我正在编写一个函数来从每个列表中删除相应的元素,我所知道的是1)索引对应,2)用户输入课程名称.如何使用filterNot从每个列表中删除相应的元素?我认为我对每个列表都不了解,以便对它们使用更高阶的函数.
我正在学习编程,而C++是我的第一语言.不要打扰使用指针来展示我 - 我还不了解它们,并且在我有更多的空闲时间专注于此之前不会打扰.
int mergeSort()
{
const int n = 9;
int originalarray[n] = {1, 3, 5, 7, 9, 2, 4, 6, 8};
const int halfelements = (sizeof(originalarray) / sizeof(int)) / 2;
int farray[halfelements];
int sarray[halfelements];
for (int i = 0; i < halfelements; i++) {
farray[i] = originalarray[i];
}
for (int i = halfelements, x = 0; i < (halfelements * 2); i++, x++) {
sarray[x] = originalarray[i];
}
Run Code Online (Sandbox Code Playgroud)
我被分配(我不上课 - 只是与几个朋友帮我解决)合并排序算法,算法解释但不是实现.我想重写这个,所以它适用于奇数和偶数整数.我尝试添加此代码:
if ((n % 2) != 0) int …
Run Code Online (Sandbox Code Playgroud) 我知道你可以使用inline关键字,或者只是将一个方法放在类声明ala short ctor或getter方法中,但编译器是否最终决定何时内联我的方法?
例如:
inline void Foo::vLongBar()
{
//several function calls and lines of code
}
Run Code Online (Sandbox Code Playgroud)
如果编译器认为它会使我的代码效率低下,它会忽略我的内联声明吗?
作为一个副作用,如果我在我的类之外声明了一个getter方法,如下所示:
void Foo::bar() { std::cout << "baz"; }
Run Code Online (Sandbox Code Playgroud)
编译器是否会在内幕中内联这个内容?
我最近写了一个Vector 3类,并将我的normalize()函数提交给了朋友.他说它很好,但是我应该尽可能地乘以倒数,因为在CPU时间里"乘法比划分便宜".
我的问题很简单,那是为什么?
我已经安装了'amplify-cli'。当我输入“放大配置”时,我收到错误消息:
“放大不是内部或外部命令,也不是可运行的程序或批处理文件”。
我正在编写一个链表,我想要一个struct的析构函数(一个Node结构)来简单地删除它自己,并且没有任何副作用.我希望我的列表的析构函数迭代地自己调用Node析构函数(临时存储下一个节点),如下所示:
//my list class has first and last pointers
//and my nodes each have a pointer to the previous and next
//node
DoublyLinkedList::~DoublyLinkedList
{
Node *temp = first();
while (temp->next() != NULL)
{
delete temp;
temp = temp->next();
}
}
Run Code Online (Sandbox Code Playgroud)
所以这将是我的Node析构函数:
Node::~Node
{
delete this;
}
Run Code Online (Sandbox Code Playgroud)
这是否可以接受,特别是在这种情况下?
c++ ×6
arrays ×2
aws-amplify ×1
cpu-usage ×1
destructor ×1
filter ×1
heap-memory ×1
installation ×1
linked-list ×1
linux ×1
list ×1
mergesort ×1
oracle ×1
oracleclient ×1
performance ×1
resize ×1
scala ×1
sizeof ×1
sorting ×1
sqlplus ×1
theory ×1
this ×1