小编Vik*_*ngh的帖子

为什么 string::begin() 在立即窗口中输出整个字符串

当我们在 Visual Studio IDE 中执行 string::begin() 时,它会返回一个指向字符串中第一个字符的迭代器。但是,当我们在立即窗口(或观察窗口)中键入 string::begin() 时,它返回整个字符串。为什么会这样?立即窗口不应该以这种方式运行,因为 string::begin() 返回一个迭代器,而不是一个字符串。

以下是 Visual Studio IDE 中的代码:

int main()
{
    string s = "abc";
    string::iterator it = s.begin();
    cout << *it << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下是输出:

但是,如果我们在立即窗口中输入 s.begin() ,我们会得到以下输出:

s.begin()
"abc"
    [ptr]: 0x0133fd08 "abc"
    [Raw View]: {...}
Run Code Online (Sandbox Code Playgroud)

s.begin() 在立即窗口中的结果应该是: 它应该输出一个指向字符串中第一个元素的迭代器(即它应该输出一个指向'a'的迭代器)。但是 s.begin() 在立即窗口中输出整个字符串。为什么会这样?

c++ string iterator visual-studio-2019

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

如何仅使用 C++ 中的迭代器正确迭代 3D 向量?

我有以下 main() 程序 -

int main()
{
    vector<vector<vector<int> > > vec;
    vector<vector<int> > vv;
    vector<int> ve;

    //fill vectors
    for (int i = 0; i < 5; i++)
    {
        //vector<vector<int> > vv;
        for (int j = 0; j < 10; j++)
        {
            //vector<int> ve;
            for (int t = 0; t < 3; t++)
            {
                ve.push_back(t);
            }
            vv.push_back(ve);
        }
        vec.push_back(vv);
    }

    for (vector<vector<vector<int> > >::iterator it = vec.begin(); it != vec.end(); it++)
    {
        for (vector<vector<int> >::iterator it2 = vv.begin(); it2 != vv.end(); …
Run Code Online (Sandbox Code Playgroud)

c++ iterator vector random-access

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

使用复合乘法语句时得到错误的结果 - C#

我注意到一些非常奇怪的事情。在下面的代码片段中,控制台输出的结果总是0

int result = 0;
for(int i = 1; i < 4; i++)
{
  result *= 10 + i;
}
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

它看起来result *= 10 + i;总是10result(where resultis 0)相乘而不是相加i

如果我只改变乘法线...

int result = 0;
for(int i = 1; i < 4; i++)
{
  result = result * 10 + i;
}
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

这会result在控制台上输出正确的 - 即123.

我的问题是,为什么result *= 10 + i;不能正常工作 - 并且总是给出resultas …

c# multiplication compound-assignment

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

如何在没有硬编码的情况下在 C++ 中获取类数组的长度?

我在 C++ 中有一个类数组。我是这样定义的:

Student* pliststudent = new Student[2]{ 3,5 };
Run Code Online (Sandbox Code Playgroud)

我知道当我们将类数组分配给Student* pliststudent.

如果不对其进行硬编码,就很难提取类数组的长度。

我实现了代码,因此它不是硬编码的(使用友元函数)。但我认为,必须存在更好的解决方案。

以下是我的完整代码:

Student* pliststudent = new Student[2]{ 3,5 };
Run Code Online (Sandbox Code Playgroud)

有没有更好的解决方案?我不想硬编码 Student 类数组的大小。

c++ arrays class

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