这是代码.结果我得到"4 4".不明白为什么它不是"2 4"(根据下限和上限的'defenitions).
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> v = {1, 2, 4, 5};
vector<int>::iterator s , f;
s = lower_bound(v.begin(), v.end(), 3);
f = upper_bound(v.begin(), v.end(), 3);
cout << (*s) << " " << (*f);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试解决学习C ++入门课程的编码挑战,而我只是想了解我遇到的分段错误。
我正在编写一个给定的函数,将节点插入到链表的末尾。这个想法是,给定整数输入,第一个输入将被视为列表末尾的一部分,因为它的指针成员变量为nullptr。之后,必须附加所有其他输入,以便它们的插入发生在该空节点之前。
这是函数的第一部分:
SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) {
if(head == nullptr) //if the list is empty
{
head -> next = new SinglyLinkedListNode(data);
return head;
}
return head;
}
Run Code Online (Sandbox Code Playgroud)
但是函数的这一部分给了我一个分段错误错误:
head -> next = new SinglyLinkedListNode(data);
Run Code Online (Sandbox Code Playgroud)
这些是类声明:
#include <bits/stdc++.h>
using namespace std;
class SinglyLinkedListNode {
public:
int data;
SinglyLinkedListNode *next;
SinglyLinkedListNode(int node_data) {
this->data = node_data;
this->next = nullptr;
}
};
class SinglyLinkedList {
public:
SinglyLinkedListNode *head;
SinglyLinkedList() {
this->head = nullptr;
}
};
Run Code Online (Sandbox Code Playgroud)
和主要:
int …Run Code Online (Sandbox Code Playgroud) 我正在以下无用程序中的 gcc 中设置调试模式:
#define _GLIBCXX_DEBUG 1
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v{1,2,3};
for(int i=0; i<100000000000000;i++)
cout<<v[i];
}
Run Code Online (Sandbox Code Playgroud)
该程序让我知道我的索引超出范围。但是,如果我翻转前两行的顺序,则不会收到此类错误消息(#include 在 #define 之前)。为什么是这样?有没有办法在程序的另一行上切换调试模式(没有编译器标志)?我这么问是因为我正在 Leetcode.com 上解决问题,我无法传递编译器标志或修改问题的第一行。
我是C ++的新手,我怀疑,这个问题当然不仅与有关tuple。
因此,我看了一个大致包含以下代码的教程:
#include <tuple>
std::tuple<...> t(...)
Run Code Online (Sandbox Code Playgroud)
为什么#include <tuple>呢 特别是考虑到我们明确编写的事实std::tuple。没有那#include行代码就可以很好地编译...
我的书说
typedef Card* Cardptr;
Run Code Online (Sandbox Code Playgroud)
"将新类型名称定义为类型Cardptr的同义词Card*." 我看到*符号仅修改Cardptr,如果还有其他同义词,则不会被*符号修改.这对我来说很困惑.我的书让它看起来像实际的结构类型Card*,这让我觉得其他同义词的类型Card*也是如此
typedef Card* Cardptr, n;
Run Code Online (Sandbox Code Playgroud)
哪里n也会有这种类型Card*.如果他们移动这样的*符号,会不会更清楚?
typedef Card *Cardptr, n;
Run Code Online (Sandbox Code Playgroud)
这样一来,你就知道该类型实际上是Card,这Cardptr仅仅是一个指向它,这n是不是一个指针.这是什么原因?
#include <iostream>
#include <string>
#include <sstream>
//#include <bits/stdc++.h>
#include <iomanip> // std::setprecision
#include <math.h>
using namespace std;
Run Code Online (Sandbox Code Playgroud)
我想删除标题#include <bits/stdc++.h>,因为它显着减慢了我的编译时间.
当我删除它时,我收到以下错误:
error: cannot convert ‘long double*’ to ‘double*’ for argument ‘2’ to ‘double modf(double, double*)’
fractpart = modf(val, &intpart);
Run Code Online (Sandbox Code Playgroud)
我认为问题是缺少头文件,但不知道它是哪一个.
我得到错误的代码是:
fractpart = modf(val, &intpart);
if (fractpart != 0) {
throw Error("ERR");
}
Run Code Online (Sandbox Code Playgroud) 所以,我试图创建一个简单的程序来计算国防部第n个Fibonacci数10^9+7使用倍增公式与F[0]=0和F[1]=1.程序似乎可以在我的计算机上使用编译器VS2010和CodeBlocks与MinGW一起工作但是在ideone上测试我的程序会为每个输入返回0.似乎在第一次迭代之后,F.find(n)实际上找到了不应该存在的元素.这是我的代码(在VS2010中,我刚刚更改了包含).
#include <bits/stdc++.h>
using namespace std;
std::map<unsigned long long,unsigned long long> F;
unsigned long long fib(unsigned long long n)
{
if(n==-1) return 0; // Shifting index by 1
if(n==0) return 1;
if(n==1) return 1;
if(F.find(n) != F.end()) return F[n]; // This seems to be the problem,
else
{
if(n%2==0) //
{
F[n/2-1] = fib(n/2-1)%1000000007;
F[n/2] = fib(n/2)%1000000007;
return F[n] = (F[n/2-1]*F[n/2-1]+F[n/2]*F[n/2])%1000000007;
}
else
{
F[n/2] = fib(n/2)%1000000007;
F[n/2+1] = fib(n/2+1)%1000000007;
return F[n] …Run Code Online (Sandbox Code Playgroud) 我正在尝试从std :: list中删除每个第二个元素,但是当我运行erase()时,我遇到了段错误(核心转储).
#include <bits/stdc++.h>
using namespace std;
int main()
{
list <int> num_list;
list <int> :: iterator it;
num_list.push_back(1);
num_list.push_back(2);
num_list.push_back(3);
num_list.push_back(4);
num_list.push_back(5);
cout << num_list.size() << endl;
it = num_list.begin();
advance(it, 1);
for(it; it != num_list.end(); advance(it, 2)) {
num_list.erase(it);
}
for(it = num_list.begin(); it != num_list.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 今天我试图在没有二进制搜索代码的情况下在向量中找到一个元素的位置,我发现有 find() stl 这样的东西我实现了它并且它正在编译但它没有给出正确的输出
这是我的代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
vector<int> a(0);
a.push_back(6);
a.push_back(3);
a.push_back(9);
a.push_back(5);
a.push_back(1);
vector<int> :: iterator b;
b = find(a.begin() , a.end() , 3);
cout << (a.end() - b); // output is 4
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能获得向量中任何元素的位置?谢谢
我在 Visual Studio Code 中运行 C++ 代码时遇到错误,我无法在编辑器中运行任何代码,这里是我多次搜索此问题但没有得到任何结果的错误图像。我尝试使用“|” 代替 '&&' 但仍然没有任何改进。我的 VS Code 是最新的。有人愿意分享一些解决这个问题的方法吗?似乎“#include <bits/stdc++.h>”文件中有错误,因为它说第 1 行和 char 46、char 51 等有错误...

任何有关此的信息将不胜感激,感谢您的宝贵时间...
c++ ×9
fibonacci ×1
find ×1
g++ ×1
gcc ×1
header ×1
header-files ×1
include ×1
linked-list ×1
lower-bound ×1
pointers ×1
powershell ×1
stl ×1
syntax ×1
typedef ×1
upperbound ×1
vector ×1