我知道您可以检查id(或其他选择器)是否具有某个类:
$('#mydiv').hasClass('bar')
Run Code Online (Sandbox Code Playgroud)
但是你可以查看一个班级是否还有其他班级吗?喜欢:
$('.myclass').hasClass('bar')
Run Code Online (Sandbox Code Playgroud)
就是想?
我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个)似乎没问题.
std::map(也使用红黑树)有一个额外的键,但仍然是24字节?为什么?
为什么std::queue并std::stack占用40个字节而std::vector只需要12个字节?
为什么char和double不影响班级的规模?是因为模板吗?
我正在尝试在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) 我想知道每个标志对代码的作用,以了解它的开销.我检查了
man g++为'-g'国旗
并且只发现了 "Generate extra code to write profile...."
它没有指明在哪里?
他们的任何详细手册都可以帮助我理解-g/-p的作用吗?
class A{
void virtual a(){}
};
int main() {
std::cout<<sizeof(A);
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,为什么编译器不使该函数非虚拟并保存分配给它的空间.有没有特定的理由不这样做?
我正在使用gcc 4.7编译器,如果它是特定于编译器的.
再会,
所以我决定再次通过我的 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应该是在一个句子中搜索一个词还是我只是误解了它。
另外,如果您对我的程序有任何意见,请随时提出,以便我意识到我的错误。
谢谢
示例:单词:狗
句子:狗在这里
应该返回真
我正在尝试使用邻接列表实现无向图.我使用了以下代码:
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编译器.我知道列表末尾的插入可以在恒定的时间内完成,那为什么第一个代码运行缓慢?是否有机会优化链表实施?
提前致谢
#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编译器.
从我的一个朋友那里,我听说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++ 实现一个通用的树结构 - 带有类!- 这棵树由一个键(在我的例子中是一个整数)和一个 leftChild 和 rightChild 属性组成,它们应该与树本身具有相同的类型
\n\n在 CI 中可以这样做:
\n\ntypedef struct avl {\n int key;\n int bf;\n struct avl *leftChild;\n struct avl *rightChild;\n} AVLTree;\nRun Code Online (Sandbox Code Playgroud)\n\n我在我的 C++ 代码中尝试了以下操作:
\n\nclass MTree {\n public:\n int key;\n int bf;\n\n MTree leftChild;\n MTree rightChild;\n\n MTree() {}\n ~MTree() {};\n }\nRun Code Online (Sandbox Code Playgroud)\n\n但它不起作用,并且给我以下错误消息:
\n\nmtree-ops.cpp:12: error: field \xe2\x80\x98leftChild\xe2\x80\x99 has incomplete type
mtree-ops.cpp:13: error:error: field \xe2\x80\x98rightChild\xe2\x80\x99 has incomplete type
所以你看,看起来我不能说我的类有它自己类型的属性,因为这就像试图引用定义时并不真正存在的东西。如何使用 C++ 类来完成此操作?
\n我在 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)
如何找出发生分割的索引(最好是在恒定时间内)?
#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,虽然我没有初始化,所以,它必须打印任何垃圾值.请解释...
它打印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)