小编ban*_*run的帖子

jQuery - 你能查看一个类是否有另一个类吗?

我知道您可以检查id(或其他选择器)是否具有某个类:

$('#mydiv').hasClass('bar')
Run Code Online (Sandbox Code Playgroud)

但是你可以查看一个班级是否还有其他班级吗?喜欢:

$('.myclass').hasClass('bar')
Run Code Online (Sandbox Code Playgroud)

就是想?

jquery class

3
推荐指数
2
解决办法
9542
查看次数

C++标准库上的sizeof()

sizeof()对一些C++标准库类很好奇并应用了运算符.这是我观察到的:

int main() 
{
    vector<double> v1;
    set<double> s1;
    map<double,double> m1;

    stack<char> st;
    queue<char> q;

    vector<char>  v2;
    set<char> s2;
    map<char,char> m2;

    cout<<sizeof(v1)<<" "<<sizeof(s1)<<" "<<sizeof(m1)<<endl;
    cout<<sizeof(v2)<<" "<<sizeof(s2)<<" "<<sizeof(m2)<<endl;
    cout<<sizeof(q)<<" "<<sizeof(st)<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的系统(64位)上的输出是:

12 24 24
12 24 24
40 40
Run Code Online (Sandbox Code Playgroud)

我知道std::set使用红黑树实现.所以二叉树的每个节点都有两个指针(每个8个字节),值(8个字节,总共24个)似乎没问题.

  1. std::map(也使用红黑树)有一个额外的键,但仍然是24字节?为什么?

  2. 为什么std::queuestd::stack占用40个字节而std::vector只需要12个字节?

  3. 为什么chardouble不影响班级的规模?是因为模板吗?

c++ stl std

3
推荐指数
2
解决办法
3005
查看次数

为什么我不能在C中使用#define作为关键字?

我正在尝试在C++中使用以下代码.有人能告诉我为什么会出现错误吗?

#define  def namespace;
using def std;
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)

而以下代码工作正常

#define  def namespace std;
using def;
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ macros macrodef

2
推荐指数
1
解决办法
183
查看次数

理解g ++编译标志

我想知道每个标志对代码的作用,以了解它的开销.我检查了

man g++'-g'国旗

并且只发现了 "Generate extra code to write profile...."

它没有指明在哪里?

他们的任何详细手册都可以帮助我理解-g/-p的作用吗?

gcc g++

2
推荐指数
2
解决办法
2914
查看次数

为什么编译器在可能的情况下不使虚拟函数成为非虚函数?

class A{
     void virtual a(){}
};
int main() { 
    std::cout<<sizeof(A);
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,为什么编译器不使该函数非虚拟并保存分配给它的空间.有没有特定的理由不这样做?

我正在使用gcc 4.7编译器,如果它是特定于编译器的.

c++ oop gcc virtual-functions

2
推荐指数
1
解决办法
109
查看次数

strstr 使用 c 始终返回 true 在字符串中查找单词

再会,

所以我决定再次通过我的 C 并开始对字符串中的单词进行简单的搜索。

这是我的代码:

#include<stdio.h>
#include<conio.h>
#include<string.h>

main(){
char word[100];
char sentence[100];

clrscr();
printf("Enter a word: ");
fgets(word, 100, stdin);
getch();
printf("The word is : %s", &word);
getch();
printf("\nEnter a sentence: ");
fgets(sentence, 100, stdin);
getch();
printf("The sentence is: %s",&sentence);
getch();
if(strstr(sentence,word) == 0){
  printf("word found!");
}
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,每当我尝试使用 搜索字符串中的单词时strstr,它总是返回word found。我也尝试过使用,strcmp但这只会比较字符串的第一个实例,并在找不到匹配项时停止,因此如果您想在字符串问题中进行单词搜索,这并不是真正可取的。

我以前从未真正制作过这样的程序,实际上从未需要过。所以我可以问为什么不能正常工作,因为根据它的描述strstr应该是在一个句子中搜索一个词还是我只是误解了它。

另外,如果您对我的程序有任何意见,请随时提出,以便我意识到我的错误。

谢谢

示例:单词:狗
句子:狗在这里
应该返回真

c c-strings turbo-c

2
推荐指数
1
解决办法
3万
查看次数

为什么我插入STL列表运行缓慢?

我正在尝试使用邻接列表实现无向图.我使用了以下代码:

int v,e;
scanf("%d%d",&v,&e);
list<int> graph[3000];
for(int i=0;i<e;i++){
    int a,b;
    scanf("%d%d",&a,&b);
    graph[a].push_back(b);
    graph[b].push_back(a);
}
Run Code Online (Sandbox Code Playgroud)

为了测试我的代码的运行时间,我创建了一个包含3000个顶点和所有可能边的输入文件.运行需要2.2秒.我尝试通过将其更改为二维数组进行优化,如下所示

int graph[3000][3000];

for(int i=0;i<e;i++){
    int a,b;
    scanf("%d%d",&a,&b);
    graph[a][p[a]]=b;
    graph[b][p[b]]=a;
    p[a]++;
    p[b]++;
}
Run Code Online (Sandbox Code Playgroud)

其中'p'的大小为3000,全部为零.对于相同的输入文件,此代码仅运行0.35秒.我正在使用gcc-4.3.2编译器.我知道列表末尾的插入可以在恒定的时间内完成,那为什么第一个代码运行缓慢?是否有机会优化链表实施?

提前致谢

c++ stl list

1
推荐指数
2
解决办法
707
查看次数

为什么以下代码不会产生分段错误?

#include <iostream>
using namespace std;

int a[4];
int main(){
    int b=7;
    cout<<a[b]<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我试图访问未分配的内存.所以我希望输出是一个分段错误,而输出是一些垃圾值.

后来我将'b'增加到1000,现在输出是'Segmentation fault'.这种行为有特定的原因吗?

我正在使用gcc-4.3.2编译器.

c++ arrays segmentation-fault

1
推荐指数
1
解决办法
277
查看次数

为什么pow功能比简单操作慢?

从我的一个朋友那里,我听说pow函数比它的等价物慢,只需简单地将基数乘以其指数的次数.例如,据他说,

#include <stdio.h>
#include <math.h>

int main () {
    double e = 2.71828
    e2 = pow (e, 2.0)
    printf("%le", e2)
}
Run Code Online (Sandbox Code Playgroud)

比...慢

#include <stdio.h>

int main() {
    double e = 2.71828
    e2 = e * e
    printf("%le", e2)
}
Run Code Online (Sandbox Code Playgroud)

作为一个新手,我认为他们都以相同的速度编译,并且按照相同的逻辑,我更喜欢前者的典型精神.那么,为什么前一个代码块比后者慢呢?

c gcc pow

1
推荐指数
1
解决办法
1259
查看次数

在 C++ 中具有相同类的属性

我想用 C++ 实现一个通用的树结构 - 带有类!- 这棵树由一个键(在我的例子中是一个整数)和一个 leftChild 和 rightChild 属性组成,它们应该与树本身具有相同的类型

\n\n

在 CI 中可以这样做:

\n\n
typedef struct avl {\n    int key;\n    int bf;\n    struct avl *leftChild;\n    struct avl *rightChild;\n} AVLTree;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在我的 C++ 代码中尝试了以下操作:

\n\n
class MTree {\n    public:\n        int key;\n        int bf;\n\n        MTree leftChild;\n        MTree rightChild;\n\n        MTree() {}\n        ~MTree() {};\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它不起作用,并且给我以下错误消息:

\n\n

mtree-ops.cpp:12: error: field \xe2\x80\x98leftChild\xe2\x80\x99 has incomplete type

\n\n

mtree-ops.cpp:13: error:error: field \xe2\x80\x98rightChild\xe2\x80\x99 has incomplete type

\n\n

所以你看,看起来我不能说我的类有它自己类型的属性,因为这就像试图引用定义时并不真正存在的东西。如何使用 C++ 类来完成此操作?

\n

c++ class object data-structures

1
推荐指数
1
解决办法
1931
查看次数

如何找到 strtok() 分割字符串的索引?

我在 C 中使用 strtok() 函数。它返回指向分割字符串的位置的指针。

int main() 
{ 
    char s[100]="A B C D";
    char *p;
    p=strtok(s," ");
    while(p!=NULL){
        p=strtok(NULL,".");
        //Do something
    }
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

如何找出发生分割的索引(最好是在恒定时间内)?

c string cstring

0
推荐指数
1
解决办法
2061
查看次数

为什么C中局部变量的默认值相同?

#include <stdio.h>  
int main()
{
    int i,j=3;
    i=4+2*j/i-1;
    printf("%d",i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它会每次打印9,虽然我没有初始化,所以,它必须打印任何垃圾值.请解释...

c local-variables

-3
推荐指数
1
解决办法
4282
查看次数

打印指针指针

它打印3,而我想要打印2.我不明白我只增加一次的原因.如果这是正确使用指针t指针还让我知道?我刚刚制作了一个示例代码,以了解指针的指针是如何工作的.

#include<stdio.h>
void main(){
int a1[] = {1,2,3,4,5,6};
int a2[] = {7,8,9,10,11,12};
int *a3 = a1;
int *a4 = a2;
int **a[2];
a[0] = a3;
a[1] = a4;

printf("%d",*(++(*a)));



}
Run Code Online (Sandbox Code Playgroud)

c pointers

-6
推荐指数
1
解决办法
244
查看次数