小编kee*_*ety的帖子

如何在排序向量中找到下限

我是C++的新手,并不了解STL库的所有概念,所以请耐心等待.我编写了以下代码片段(粘贴在下面),以便在排序向量中找到lower_bound.尽管此代码在Release模式下工作正常,但它在调试模式(VStudio-8)中断言.我相信这是因为less_equal<int>不是一个严格的弱序.

从以下线程:stl排序 - 严格弱排序

我有点明白,STL会强加弱序,但我还不清楚为什么?

在我的情况下,我需要使用,less_equal<int>因为我试图找到排序向量中给定值的最近元素.

下面的代码片段是否有效?还有,有更好的方法吗?此外,任何关于弱和部分排序的见解/参考都会有所帮助.

int main() {

  vector<int> dest;
  for(int i = 0;i <6;i++) {

     dest.push_back(i);
  }

  vector<int>::iterator i = 
  std::lower_bound(dest.begin(),dest.end(),4,less_equal< int >());

  return 1;

}
Run Code Online (Sandbox Code Playgroud)

c++ lower-bound

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

const对象存储在哪里

我明白函数不应该返回对自动变量的引用.但是我只想了解常量对象的存储位置,即它是否与静态全局变量一起存储在内存部分中.

这是Visual Studio 8上的代码.看起来const对象存储为自动变量.我假设事情是正确的还是实现特定的,还是取决于构造函数是否微不足道?

如果有人能够解释为什么每个案例都像他们那样行事,那将会非常棒.

//here i'm intentionally returning a ptr to local const ptr hope the syntax is right

const char* const* get_const_char_ptr() {
    const char * const ptr = "downontheupside";
    return &ptr;
}

const int& get_const_int() {        
    const int magic_number = 20;
    return magic_number;
}

const string& get_const_string() {       
    const string str("superunknown");
    return str;
}

const string* get_const_string_ptr() {
    const string str("louderthanlove");
    return &str;
}

int main() {
    //case1
    const int &i = get_const_int();
    cout<<"case1:"<<i<<endl;

    //case 2
    const …
Run Code Online (Sandbox Code Playgroud)

c++ const reference

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

模板中的隐式const转换

我遇到类似于下面的代码片段,它会抛出编译器错误,因为它使用了一个const_iterator.是有一个原因vec.end()std::copy不会隐获得const投?

int main(int argc, char* argv[]) {

    vector<int> vec;
    vec.push_back(20);
    vec.push_back(30);
    vector<int> copy_vec;
    vector<int>::const_iterator i = vec.begin();
    std::copy(i,vec.end(),back_inserter(copy_vec));
    cerr<<copy_vec.size()<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ const-cast

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

标签 统计

c++ ×3

const ×1

const-cast ×1

lower-bound ×1

reference ×1