基本示例:
class Base
{
public:
double mValue = 10.0;
};
class Derived: public Base
{
public:
double mAdditionalValue = 20.0;
};
int main()
{
Derived derived;
Base *rBase = &derived;
std::cout << "value " << rBase->mValue << '\n';
std::cout << "additionalValue " << rBase->mAdditionalValue << '\n';
}
Run Code Online (Sandbox Code Playgroud)
显然我无法访问mAdditionalValuevia,rBase因为引用类型(Base)不是Derived,并且不包含被调用的成员mAdditionalValue.太好了!智能机制!但实际上这是用C++实现的?
我的意思是:rBase无论如何指向一个类型的对象Derived,并在内存中存储它mAdditionalValue(我已创建它).所以它指向整个对象.它可以"物理"访问该数据.
谁"阻止/限制"指针范围的可访问性?它在指针的逻辑内(所以是软件实现)还是编译器在编译阶段,捕获它并阻止操作?那会怎么做?检查内存地址并限制它们?
这是代码:
public class Program
{
public static void Main(string[] args)
{
Test test = new Test();
}
}
public class Test
{
public Test() {
Console.WriteLine("type: " + Type.GetType("Registration"));
}
}
public class Registration
{
public int mAge;
public string mName;
public Registration() {}
}
Run Code Online (Sandbox Code Playgroud)
当它尝试获取类型时Registration,它返回null.所以,两种.Name或.AssemblyQualifiedName无法访问.
AssemblyQualifiedName只有GetType()不退货我才能提供null.
为什么GetType()返回null?希望问题很清楚.
代码是基本的:
#include <iostream>
#include <vector>
#include <random>
#include <chrono>
#include <algorithm>
int main(int argc, const char *argv[]) {
std::vector<int> mSet = { 1, 2, 3, 4 };
auto timeSeed = std::chrono::high_resolution_clock::now().time_since_epoch().count();
std::seed_seq ss{ uint32_t(timeSeed & 0xffffffff), uint32_t(timeSeed >> 32) };
std::mt19937_64 rng;
std::shuffle(mSet.begin(), mSet.end(), rng);
for (size_t i = 0; i < mSet.size(); i++) {
std::cout << mSet[i] << " ";
}
}
Run Code Online (Sandbox Code Playgroud)
它总是向我显示相同的序列.我哪里错了?
我正在制作一个基本上利用SSE2优化此代码的代码:
double *pA = a;
double *pB = b[voiceIndex];
double *pC = c[voiceIndex];
for (int sampleIndex = 0; sampleIndex < blockSize; sampleIndex++) {
pC[sampleIndex] = exp((mMin + std::clamp(pA[sampleIndex] + pB[sampleIndex], 0.0, 1.0) * mRange) * ln2per12);
}
Run Code Online (Sandbox Code Playgroud)
在这:
double *pA = a;
double *pB = b[voiceIndex];
double *pC = c[voiceIndex];
// SSE2
__m128d bound_lower = _mm_set1_pd(0.0);
__m128d bound_upper = _mm_set1_pd(1.0);
__m128d rangeLn2per12 = _mm_set1_pd(mRange * ln2per12);
__m128d minLn2per12 = _mm_set1_pd(mMin * ln2per12);
__m128d loaded_a = _mm_load_pd(pA);
__m128d loaded_b = _mm_load_pd(pB); …Run Code Online (Sandbox Code Playgroud) 我试图从文件夹树中选择一个随机文件,从固定路径开始,然后在所有子文件夹(或选定的文件夹本身)中递归“搜索”。
我的想法是:制作文件列表,计算文件数,在此范围内选择一个随机数,然后选择该索引处的文件。
这是我的代码:
// create list of all files
std::vector<std::string> paths;
for (const auto &entry : std::filesystem::recursive_directory_iterator(mPathDirectory)) {
if (!std::filesystem::is_directory(entry)) {
paths.push_back(entry.path().string());
}
}
// pick random file
size_t numberOfFiles = paths.size();
int indexRandomFile = (int)round(rescale(random::uniform(), 0.0, 1.0, 0, numberOfFiles - 1));
return paths[indexRandomFile];
Run Code Online (Sandbox Code Playgroud)
另外O3,考虑到我有很多文件,并且在“音频”应用程序中(应该更快),它的运行速度非常慢。
您有更聪明的主意吗?像O(1)这样的东西?:P
我制作一个从POST 4图像接收的PHP脚本,而不是存储它们并创建拇指trought GD php库.问题是,只有当我每张4张4张照片(或每张4张2张或更少,实际上最多8 mb)时才能正常工作.为什么?我检查memory_limit(64mb),upload_max_filesize(25mb)和max_file_uploads(120secs)的值,如果我增加它们,没有任何反应.
看来POST数组完全被忽略了:我看到了这个因为我在php脚本上加了一些"echo".代码如上:
if(($_FILES['userfile1']['tmp_name']!="") or ($_FILES['userfile2']['tmp_name']!="") or ($_FILES['userfile3']['tmp_name']!="") or ($_FILES['userfile4']['tmp_name']!="")) {
// JPG/JPEG, max 4mb each
for($i=1; $i<=4; $i++) {
if ($_FILES['userfile'.$i]['tmp_name']!="") {
$path_parts=pathinfo($_FILES['userfile'.$i]['name']);
if(((strtolower($path_parts['extension'])=='jpg') or (strtolower($path_parts['extension'])=='jpeg'))
&& ($_FILES['userfile'.$i]['size']<=4194304)) {
} else {
$wrong=1;
}
}
}
if(isset($wrong)) {
$abort=1;
$messaggio="Errore - Formato delle foto non valido. Assicurati che il formato sia jpg/jpeg e che la foto non superi i 3 Megabyte";
} else {
mkdir("./articles/photos/".$articleid);
mkdir("./articles/photos/thumbs/".$articleid);
$sql="";
for($i=1; $i<=4; $i++) {
if ($_FILES['userfile'.$i]['tmp_name']!="") {
$photoid=$articleid."-".$i;
$uploaddir="./articles/photos/".$articleid."/"; …Run Code Online (Sandbox Code Playgroud) 我在GWT上有这个ListBox(ComboBox):
final ListBox category_2=new ListBox();
category_2.setStyleName("article_combo");
category_2.addItem("----------", "0");
category_2.addItem("1° Element", "1");
category_2.addItem("2° Element", "2");
category_2.addItem("----------", "0");
category_2.addItem("3° Element", "3");
category_2.addItem("4° Element", "4");
category_2.addItem("----------", "0");
category_2.addItem("5° Element", "5");
category_2.addItem("----------", "0");
category_2.addItem("6° Element", "6");
category_2.addItem("7° Element", "7");
category_2.addItem("8° Element", "8");
Run Code Online (Sandbox Code Playgroud)
如果我试图获得所选择的身份的索引
category_2.getSelectedIndex()它返回给我class_2的索引(但它反映了数组索引,而不是我设置的索引).
示例:如果我选择5°元素,它不会返回"5",而是"7".我怎样才能获得自己设定的索引?干杯
我要在这样的jQuery上创建一个函数:
$(document).ready(function() {
$('#header_rules').click(function() {
// here i define myFunction()
});
});
<a id="header_rules" href="#">RULES</a>
Run Code Online (Sandbox Code Playgroud)
代替
<a id="header_rules" href="#" onClick="myFunction();return false">RULES</a>
Run Code Online (Sandbox Code Playgroud)
但我不知道在有人点击链接后如何使用jQuery阻止滚动到页面顶部.
事实上,我将完全摆脱本机JS,这可能会产生一些麻烦(这就是为什么我使用像jQuery这样的JS框架).
有帮助吗?干杯
如果字符串长度大于30,我想将"值"推入"数组".所以我已经完成了这个PHP脚本:
if(!mb_strlen($string, 'utf-8')<=30) array_push($array, "value");
Run Code Online (Sandbox Code Playgroud)
但是,如果字符串小于31,它也会推动该值......为什么?
c++ ×4
php ×2
random ×2
bootstrap-4 ×1
c# ×1
css ×1
exp ×1
file ×1
file-upload ×1
gd ×1
gwt ×1
inheritance ×1
intrinsics ×1
javascript ×1
jquery ×1
listbox ×1
performance ×1
pointers ×1
polymorphism ×1
simd ×1
sse2 ×1
stdvector ×1
string ×1
types ×1
w3c ×1