小编Pra*_*ari的帖子

为什么从函数返回向量是可以的?

请考虑此代码.我已经多次看过这种类型的代码了.words是一个本地向量.如何从函数中返回它?我们可以保证它不会死吗?

 std::vector<std::string> read_file(const std::string& path)
 {
    std::ifstream file("E:\\names.txt");

    if (!file.is_open())
    {
        std::cerr << "Unable to open file" << "\n";
        std::exit(-1);
    }

    std::vector<string> words;//this vector will be returned
    std::string token;

    while (std::getline(file, token, ','))
    {
        words.push_back(token);
    }

    return words;
}
Run Code Online (Sandbox Code Playgroud)

c++ scope stl vector standard-library

106
推荐指数
4
解决办法
13万
查看次数

负dbm在信号强度中的含义是什么?

当我们试图获取附近的细胞及其LAC,MNC,信号(以及使用其他Android应用程序时)时,我们将信号作为负值(如-85dbm).我该怎么做?我应该忽略-ve sign并取绝对值,否则-85的强度小于-60?

这将如何影响我的位置查找?

android location gsm geolocation

39
推荐指数
2
解决办法
15万
查看次数

C++ 11自动编译时间还是运行时?

auto a = 10;
Run Code Online (Sandbox Code Playgroud)

当编译器知道aint在编译时还是在运行时?如果在运行时推断类型,是否会影响性能?

谢谢

c++ performance c++11

25
推荐指数
4
解决办法
1万
查看次数

为什么将括号括在逗号分隔值列表周围会改变赋值?

请考虑以下代码,

    int i;

    i = 1,2,3,4,5;
    printf("First time i = %d\n",i);

    i = (1,2,3,4,5);
    printf("Second time i = %d\n",i);   
Run Code Online (Sandbox Code Playgroud)

输出:

第一次i = 1

第二次i = 5


为什么括号使逗号运算符取最后一个值而没有括号它取第一个值?

提前致谢.

c c++ syntax

18
推荐指数
4
解决办法
2324
查看次数

如何在Swift中进行int和float之间的算术运算?

这是我在Swift编程中的第一天,到现在为止我们正在使用Objective C.我试着编写简单的附加程序.喜欢,

var i = 10
var j = 10
var k = i + j
println(k)
Run Code Online (Sandbox Code Playgroud)

但是当我将其中一个值更改为float时,它会给出错误.

var i = 10
var j = 10.4
var k = i + j
println(k)
Run Code Online (Sandbox Code Playgroud)

错误:main.swift:13:11:无法找到接受提供的参数的'+'的重载

现在我做谷歌搜索,并尝试了一些事情Double(i+j),但它不起作用.在这种情况下,Swift应该隐式地将int转换为float,不是吗?

请告知我是否在理解Swift语言时遇到任何错误.

compiler-errors swift xcode6

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

为什么插入运算符是打印地址而不是字符串?

我有简单的代码行,我使用插入运算符<<来显示hello world字符串.如果我使用运算符b那么它应该导致a.operator(b);我尝试使用插入运算符做同样的事情并且在输出中我得到字符串的地址,而不是实际的字符串.

std::cout<<"Hello world"<<std::endl;
std::cout.operator<<("Hello world").operator<<(std::endl);
Run Code Online (Sandbox Code Playgroud)

输出:

你好世界
0120CC74

我正在使用Visual Studio.

我的运营商转换有问题吗?

c++ operator-overloading std visual-c++

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

NTSD和WinDbg之间究竟有什么区别?

我对Windows调试工具感到有点困惑.

WinDbg教程

Windbg - 用一个不错的用户界面包装KD和NTSD.WinDbg既可以作为内核模式,也可以作为用户模式调试器.

这是否意味着我在NTSD中使用的任何命令都可以在WinDbg中使用?每当我进行用户模式调试时,NTSD实际上是在幕后工作吗?

windows debugging winapi windbg

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

数据结构的局部性是什么意思?

我正在阅读以下文章,

每个程序员应该了解的编译器优化

还有其他重要的优化目前超出了任何编译器的功能 - 例如,用有效的算法替换低效算法,或者改变数据结构的布局以改善其局部性.

这是否意味着如果我改变类中数据成员的顺序(布局),它会影响性能?

所以,

class One
{
int data0;
abstract-data-type data1;
};
Run Code Online (Sandbox Code Playgroud)

性能差异,

class One
{
abstract-data-type data0;
int data1;
};
Run Code Online (Sandbox Code Playgroud)

如果这是真的,那么在定义类或数据结构时,经验法则是什么?

c++ memory performance compiler-optimization visual-c++

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

为什么gcc反汇编程序为局部变量分配额外的空间?

我用C编写了简单的函数,

void GetInput()
{
    char buffer[8];
    gets(buffer);
    puts(buffer);
}
Run Code Online (Sandbox Code Playgroud)

当我在gdb的反汇编程序中对它进行反汇编时,它会进行以下反汇编.

   0x08048464 <+0>: push   %ebp
   0x08048465 <+1>: mov    %esp,%ebp
   0x08048467 <+3>: sub    $0x10,%esp
   0x0804846a <+6>: mov    %gs:0x14,%eax
   0x08048470 <+12>:    mov    %eax,-0x4(%ebp)
   0x08048473 <+15>:    xor    %eax,%eax
=> 0x08048475 <+17>:    lea    -0xc(%ebp),%eax
   0x08048478 <+20>:    mov    %eax,(%esp)
   0x0804847b <+23>:    call   0x8048360 <gets@plt>
   0x08048480 <+28>:    lea    -0xc(%ebp),%eax
   0x08048483 <+31>:    mov    %eax,(%esp)
   0x08048486 <+34>:    call   0x8048380 <puts@plt>
   0x0804848b <+39>:    mov    -0x4(%ebp),%eax
   0x0804848e <+42>:    xor    %gs:0x14,%eax
   0x08048495 <+49>:    je     0x804849c <GetInput+56>
   0x08048497 <+51>:    call   0x8048370 <__stack_chk_fail@plt>
   0x0804849c …
Run Code Online (Sandbox Code Playgroud)

c compiler-construction optimization assembly gdb

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

rvalue和lvalue之间的确切差异

当我在阅读http://thbecker.net/articles/rvalue_references/section_01.html时,我得到了下面的信息.

// lvalues:
//
int i = 42;
i = 43; // ok, i is an lvalue
int& foo();
foo() = 42; // ok, foo() is an lvalue
int* p1 = &foo(); // ok, foo() is an lvalue

// rvalues:
//
int foobar();
int j = 0;
j = foobar(); // ok, foobar() is an rvalue
int* p2 = &foobar(); // error, cannot take the address of an rvalue
j = 42; // ok, 42 is an rvalue …
Run Code Online (Sandbox Code Playgroud)

c++ rvalue c++11

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