我认为"value"在<select>下面的元素上添加属性集会导致默认选择<option>包含my provided "value":
<select name="hall" id="hall" value="3">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>Run Code Online (Sandbox Code Playgroud)
但是,这并没有像我预期的那样奏效.如何设置<option>默认选择的元素?
如何在Visual Studio 2010中自动缩进源代码?
我使用了Ctrl+ K,Ctrl+ F,但它不起作用; 有没有其他方式/插件来做到这一点?
考虑以下代码:
#include <iostream>
using namespace std;
int main()
{
int x, y, i;
cin >> x >> y >> i;
switch(i) {
case 1:
// int r = x + y; -- OK
int r = 1; // Failed to Compile
cout << r;
break;
case 2:
r = x - y;
cout << r;
break;
};
}
Run Code Online (Sandbox Code Playgroud)
G ++抱怨.crosses initialization of 'int r'我的问题是:
crosses initialization?x + y通过编译,但后来失败了?crosses initialization?编辑 …
class OuterClass {
class InnerClass {
static int i = 100; // compile error
static void f() { } // compile error
}
}
Run Code Online (Sandbox Code Playgroud)
虽然无法访问静态字段OuterClass.InnerClass.i,但如果我想记录一些应该是静态的东西,例如创建的InnerClass对象的数量,那么将该字段设置为静态会很有帮助.那么为什么 Java禁止内部类中的静态字段/方法呢?
编辑:我知道如何使编译器满意静态嵌套类(或静态内部类),但我想知道的是为什么java禁止语言设计和内部类(或普通内部类)内的静态字段/方法实施方面,如果有人了解更多.
我有一个静态库文件libunp.a,我知道我可以gcc -lunp xx用来链接到库.
我可以#pragma comment(lib,"xxx.lib")用来告诉Microsoft C/C++编译器包含库; 我怎么能在Linux/GCC下做到这一点?
void permute(string elems, int mid, int end)
{
static int count;
if (mid == end) {
cout << ++count << " : " << elems << endl;
return ;
}
else {
for (int i = mid; i <= end; i++) {
swap(elems, mid, i);
permute(elems, mid + 1, end);
swap(elems, mid, i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的函数显示了str(str[0..mid-1]作为一个稳定的前缀和str[mid..end]一个可置换的后缀)的排列.所以我们可以permute(str, 0, str.size() - 1)用来显示一个字符串的所有排列.
但该函数使用递归算法; 也许它的表现可以改善?
是否有更好的方法来置换字符串?
我正在尝试找到一个迭代包变量模板参数列表的方法.现在和所有迭代一样,您需要某种方法来了解打包列表中有多少参数,更重要的是如何从打包参数列表中单独获取数据.
一般的想法是迭代列表,将int类型的所有数据存储到向量中,将char*类型的所有数据存储到向量中,并将float类型的所有数据存储到向量中.在这个过程中,还需要一个单独的向量来存储参数进入顺序的各个字符.例如,当你push_back(a_float)时,你也在做一个push_back('f'),它只是存储一个单独的char来了解数据的顺序.我也可以在这里使用std :: string,只需使用+ =.该矢量仅用作示例.
现在,事物的设计方式是功能本身是使用宏构建的,尽管存在恶意,但它是必需的,因为这是一个实验.因此,使用递归调用几乎是不可能的,因为将包含所有这些的实际实现将在编译时扩展; 你不能招募一个宏.
尽管有各种可能的尝试,我仍然坚持要弄清楚如何实际做到这一点.所以相反,我使用了一个更复杂的方法,包括构造一个类型,并将该类型传递到varadic模板,在一个向量中扩展它,然后简单地迭代它.但是我不想像以下那样调用函数:
foo(arg(1), arg(2.0f), arg("three");
Run Code Online (Sandbox Code Playgroud)
所以真正的问题是如果没有这样的话我该怎么办?为了让你们更好地理解代码实际在做什么,我已经粘贴了我目前正在使用的乐观方法.
struct any {
void do_i(int e) { INT = e; }
void do_f(float e) { FLOAT = e; }
void do_s(char* e) { STRING = e; }
int INT;
float FLOAT;
char *STRING;
};
template<typename T> struct get { T operator()(const any& t) { return T(); } };
template<> struct get<int> { int operator()(const any& t) { return t.INT; } };
template<> struct get<float> { float operator()(const any& …Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么使用迭代器而不是数组索引?
string::iterator it;
for (it = str.begin(); it < str.end(); it++)
cout << *it;
cout << endl;
Run Code Online (Sandbox Code Playgroud)
为什么不:
for (int i = 0; i < str.size(); i++)
cout << str[i];
cout << endl;
Run Code Online (Sandbox Code Playgroud)
似乎string :: iterator也没有提供范围检查.我们为什么要使用string::iterator而不是索引?
谢谢.
我听说c ++程序员应该避免使用memset,
class ArrInit {
//! int a[1024] = { 0 };
int a[1024];
public:
ArrInit() { memset(a, 0, 1024 * sizeof(int)); }
};
Run Code Online (Sandbox Code Playgroud)
所以考虑到上面的代码,如果你不使用memset,怎么能把[1..1024]填充为0?在C++中memset有什么问题?
谢谢.
c++ ×5
string ×2
algorithm ×1
binary-tree ×1
c++11 ×1
gcc ×1
html ×1
html-select ×1
indentation ×1
iterator ×1
java ×1
memset ×1
permutation ×1